lizzytysh wrote:I was originally tempted to comment along the lines of, "I never realized you had alternate identities here, Greg." Decided to hold off on that, though.
Thank you for that, at least!
And no, I have never used
any alternate
name. Ever.
Just "~greg". Same old "~greg". No space.
(The space is implicit, between my ears.)
(Alternate
identities are an altogether different matter.
There are not enough names to name all of mine. )
So.
I am not "Lion of Lions".
And I am not everybody's favorite spammer,
the unfortunate victim of MI5 Persecution, whoever.
But "Lion of Lions" is obviously the same person who just recently
posted on alt.music.leonard-cohen the parody titled:
"MI5 Persecution of Mrs Leonard Arthur Cohen"
They could be different people, using the same nonsense-generator.
But I would prefer that they were the same person,
because I have a feeling I know who it is.
Of course I could be wrong. But you can guess what my guess is
from the title of the response that I
almost made, namely:
"A TSUNAMI OF TOOTY FROOTIES"
~~
And of course I see the similarities with my writing.
And I am not in the least bit offended
when they're pointed out to me.
We all have our own personal ya-ya's to work out.
There is some degree of boasting that each of us must do,
--if only just to be done with it. And the sooner each of us
can get over our own personal presentation mania, then
the sooner we can be authentic and open to the true
happiness of each other's company.
(Provided we have anything left to say to each other.)
Any obscurity in my writing
is due to some kind of failed attempt to show off
in some way or another.
Because I'm still trying to grow up.
People have always wondered about me.
And I am truly sorry about that.
I never did want to be "different".
It's just that the drive in me to fit-in is exceedingly weak.
I was born that way. I had no choice.
I suppose I was supposed to fit in with the math and physics types.
I've been around them.
And they are truly fine people.
Generally much healthier minded than English department types.
Far fewer oversized fragile egos.
But unfortunately my heart was never with them.
It has always been with the poets and painters.
There are some 30000 physical-books in my library.
I have to sleep in the living room because the bed room is book-solid.
But ever since I first saw the "Songs From A Room" album cover,
that's been my idea of the ideal life style.
Just an empty white-washed room, on a Greek island.
One desk. One typewriter. And a girl or two.
Every day I beg myself - please let me just finish this
one program or theorem or philosophy, or obligatory
response to a klutz like Mr LaPine, --and then I'll
give up this lifeless approach to life, and start writing poetry.
It'll be slime-mold.
But at least it'll be alive.
~~
I never did have any friend who was into everything I was into.
But I've never wanted one
Everything interests me. Much too much.
I have absolute no instinctive sense of realatve value.
My best friends were those who cut me off when I went off
on tangents that they weren't interested in.
But in a way that let me know that it wasn't me they were
cutting off. "The sin, not the sinner."
And it's only that kind of pull-back
that lets me consider whether I really want to get into
the tangents I'm getting into, or not. And sometimes
I think they're worth it, and sometimes I think they aren't.
But at least I get the chance to make the choice.
Without that little help from my friends
I would have been a robot, a machine, a terminator.
So thank you, Dar!
I do consider you a true friend.
I know it can be frustrating for you plow through
some of my stuff without exploding in expletives!
But you've managed to do - and state your complaints
- without going that far.
And I really appreciate that.
~~~
Today I heard on CNN that Rudy Giuliani had Won!
Which surprised me. So I looked up and noticed
that what he, really, had was --"one".
Just 1 vote.
Language is hard to use. And I can't control what
people are or aren't interested in.
But when they have taken the trouble to try to read
something I have written, and still can't follow it,
then that is my fault. And I'd much rather they
just told me that than - - - (nothing).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
And so for you Dar,
this is the last time I am going to explain this.
This --is the way I was using Warshall's algorithm.
It's taken verbatim from the script
that generated the lcngarc site at twoshakesofalamgstail,
-with my comments about the proof of the theorem, inside the subroutine.
The proof that this works - is the site itself!
So, if this isn't clear enough for you,
then it really is your fault.
You are simply hopeless. And I have to give up
trying to explain this to you.
(--And in that, you'd be following me.
Because I can't follow this anymore either!
There's a great expression in perl programming:
"write-once; read-never" ; )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub CLOSE_VECTORS
{
print "begin closing vector.\n";
MarkTime( my $op = 'Transitive closure of vectors' );
GET('`count', '`arrows');
# There are 2 subtle issues
# to do with closing 'vectors'.
# One is original hard "conflicts",
# meaning illusory instances of
# loops $p < $q && $q < $p,
# most likely due to missing posts
# or misordered references lines.
# I take extraordinary pains
# when initializing 'vectors' from 'arrow'
# to correct these few situations!
# The second problem is that Warshall's
# algorithm is incredibly slow if it's
# done straight. But it can be done
# much more quickly if it can be trusted
# that the relationship will never have
# loops. (And if it has loops, then I don't
# have the foggiest idea what to do about them!)
#
#
# So
# initialize 'vectors' from '`arrows'
# (vs old way of setting 'vectors' to 'arrow',
# --because either I want to to keep '`arrows'
# around to check which posts cause loops,
# or simply to keep the structures clean
# and separate.)
# notation: "$p < $q in $k" means that
# ..$p..$q.. occurs in the reference line
# of real post $k.
# "$p < $q" means that ..$p..$q.. occurs
# in some reference line.
# If $p < $q for some $i
# and $q < $p for no $j
# then $p < $q is asserted.
# But if $p < $q in $i
# whereas $q < $p in $j
# then there is a conflict.
# An attempt is made to resolve this rare
# but existing conflict by checking if
# exactly one of $p < $q ($q) and $q < $p ($p) occures.
# If so then the conflict is resolved.
# But if neither exists then the conflict remains,
# and we can't trust either ordering.
# (The posts will not get isolated
# from their threads because for $p < $q
# to be attested at all, means that
# $p < $q must occur in some $i,
# and therefore both $p < $i and $q < $i
# are attested, so $p and $q associate
# with the $i thread.
# BUT IF BOTH $p<$q($q) AND $q<$p($p) occur
# THEN THIS IS A LOOP!!!
# It's the smallest possible loop
# (unless some reference line actually
# contains ..$p..$q...$p !!)
# but a loop none the less,
# and the program dies. The problem
# if it occurs will have to be delt
# with manually.
#foreach my $q (0..$TOP)
foreach my $q (1..$COUNT)
{
print "ini vectors from arrows $q\n" if $q % 1000 == 0;
foreach my $p (keys %{$DB{'`arrows'}[$q]})
{
# so we know that $DB{'`arrows'}[$q]{$p} exists,
# that is, $p < $q is attested
my $pq = 1;
my $qp = 0;
if(exists $DB{'`arrows'}[$p]{$q})
{
# if also $q < $p is attested,
# then this is a conflict that has to be resolved.
$pq = exists $DB{'`arrows'}[$q]{$p}{$q}; # $p < $q is hard-attested
$qp = exists $DB{'`arrows'}[$p]{$q}{$p}; # $q < $p is hard-attested
}
if($pq and $qp)
{
# if both are hard-attested
# then this is a loop!!!
Log(0, "LOOP!!! $p refers to $q and $q refers to $p!!!");
next;
}
if( ! ($pq || $qp) )
{
# if neither is hard-attested
# then the conflict is unresolvable
Log(0, "unresolvable conflict");
next;
}
# At this point there was either no conflict
# or the conflict was resolved.
if($pq)
{
$DB{'vectors'}[$p]{$q} = -1; # means $p < $q
$DB{'vectors'}[$q]{$p} = 1; # means $q > $p
}
elsif($qp)
{
$DB{'vectors'}[$q]{$p} = -1; # means $q < $p
$DB{'vectors'}[$p]{$q} = 1; # means $p > $q
}
}
}
# Warshall's algorithm is
# foreach 3
# foreach 1
# foreach 2
# set 1 < 3
# if 1 < 2 < 3
# This is equivalent to "Quick Warshall's algorithm" (my term)
# foreach 3
# A = {x: x < 3}
# D = {x: 3 < x}
# foreach 1 in A
# foreach 3 in D
# set 1 < 3
# provided that the relationship is loopless
# (ie, not just irreflexive initially)
# Proof of Warshall's algorithm:
# It is asserted that after the algorithm
# has been run, then a < ... < z
# => a < z,
# where '<' on the left side of =>
# is the original given relationship,
# and '<' on the right side
# is the final processed relationship.
#
# Consider any chain
# a < ... < p < i < q < ... < z
# where < is the original given relationship.
# After the i-cycle this reduces to
# a < ... < p < q < ... < z
# where < is now in an intermediate state.
# But this intermediate state of '<' becomes
# the initial given state for each
# subsequent cycle. Meaning that if
# the final < is closed wrt this intermediate state,
# then it is closed wrt the original given state.
# So order the intermediate nodes
# in this cycle by the order in which they
# are processed in the loop. Then the chain
# reduces completely, in that order.
# Now: In general,
# '<' is in a "pre-i state" before cycle i,
# a "post-i" state after cycle i,
# and in various intermediate-i states during cycle i.
# During cycle i '<' changes by the additions of p < q,
# for each encountered pair (p,q) such that p < i < q.
# The point is, the set of these (p,q) pairs
# such that p < i < q,
# is exactly the same set in the pre-i,
# intermediate-i, and post-i states of '<',
# --provided the relationship is loopless.
# This is because the set would be augmented
# iff there is a (p,i) or an (i,q)
# such that p<i<i or i<i<q,
# which would imply instances of i < i,
# (If at any point there is a loop, a < ... < a,
# then at some stage of processing '<'
# would becomes reflexive (a < a),
# so it is not sufficient to stipulate
# that the original given relationship
# is irreflexive. It must remain irreflexive.)
# I believe Warshall's algorithm works when
# the relationship is reflexive.
# And I'm thinking now it works in any case!
# Cycle i would add a p < i (or i < q)
# iff there already is an instance of
# p < i && i < i
# (or i < i && i < q)
# BUT THIS IS NO ADDITION!!!
# p < i && i < i => p < i adds no information!!
# SO WHETHER OR NOT the relation is irreflexive,
# the quick algorithm should work!
#foreach my $i (0..$TOP)
foreach my $i (1..$COUNT)
{
print "warshall $i\n" if $i % 1000 == 0;
my @P = Ancestors($i);
my @Q = Descendants($i);
foreach my $p ( @P)
{
foreach my $q (@Q)
{
$DB{'vectors'}[$p]{$q} = -1;
$DB{'vectors'}[$q]{$p} = 1;
}
}
}
PUT('vectors');
REMOVE_DB('`arrows');
print "done closing vectors.\n";
Log(0, MarkTime($op) );
}