[racket-dev] union-find

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Tue Jan 29 20:00:30 EST 2013

Yes, exactly.  I meant that the strategy of just checking the
canonical element would have the problem I described -- having an
operation for that would fix it.

Sam

On Tue, Jan 29, 2013 at 7:57 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> I understood you to be asking for something like this:
>
>   (check-equal? (uf-same-set? (uf-new 1) (uf-new 2)) #f)
>   (check-equal? (uf-same-set? (uf-new 1) (uf-new 1)) #f)
>   (check-equal? (let ([a (uf-new 1)]
>                       [b (uf-new 1)])
>                   (uf-union! a b)
>                   (uf-same-set? a b))
>                 #t)
>
> No?
>
>
> On Tue, Jan 29, 2013 at 6:51 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu>
> wrote:
>>
>> But wouldn't that equate two un-unioned invocations of (uf-new 1)?
>>
>> On Tue, Jan 29, 2013 at 7:47 PM, Robby Findler
>> <robby at eecs.northwestern.edu> wrote:
>> > But I should probably provide that, since it can be done more reliably
>> > inside the library.
>> >
>> > Robby
>> >
>> >
>> > On Tue, Jan 29, 2013 at 6:46 PM, Robby Findler
>> > <robby at eecs.northwestern.edu>
>> > wrote:
>> >>
>> >>
>> >>
>> >>
>> >> On Tue, Jan 29, 2013 at 4:20 PM, Sam Tobin-Hochstadt
>> >> <samth at ccs.neu.edu>
>> >> wrote:
>> >>>
>> >>> This is probably a silly question, but don't you also need some way to
>> >>> check if two sets have been unioned?  Does your application not need
>> >>> that?
>> >>>
>> >>
>> >> You check to see if their canonical element is the same.
>> >>
>> >> Robby
>> >>
>> >>>
>> >>> Sam
>> >>>
>> >>> On Tue, Jan 29, 2013 at 4:51 PM, Robby Findler
>> >>> <robby at eecs.northwestern.edu> wrote:
>> >>> > I've just pushed an implementation of the union-find algorithm to
>> >>> > the
>> >>> > data/
>> >>> > collection. I didn't do it quite the way wikipedia recommends, but
>> >>> > instead
>> >>> > made the sets be little containers whose canonical element can be
>> >>> > mutated.
>> >>> >
>> >>> > This suits my purposes well, but I wanted to ask if someone on the
>> >>> > list
>> >>> > knows why the wikipedia way is better.
>> >>> >
>> >>> > Also, I wasn't sure about the names, so I put "uf-" on the front of
>> >>> > everything to discourage people from using this when they really
>> >>> > want
>> >>> > racket/set. Maybe there is a better way, tho?
>> >>> >
>> >>> > Robby
>> >>> >
>> >>> >
>> >>> > _________________________
>> >>> >   Racket Developers list:
>> >>> >   http://lists.racket-lang.org/dev
>> >>> >
>> >>
>> >>
>> >
>
>

Posted on the dev mailing list.