Ostatnio implementując A* w C# potrzebowałem kolejki priorytetowej.
W odmętach internetu odnalazłem następującą implementację:
http://blogs.msdn.com/ericlippert/archive/2007/10/08/path-finding-using-a-in-c-3-0-part-three.aspx
Wykorzystuje ona uporządkowany słownik (czyli drzewo BST) "zwykłych" kolejek. Oczywiście nie byłbym sobą, gdybym nie poprawił tego trochę ;)
Moja słitaśna wersja - dodana właściwość podejrzenia szczytu stosu bez zdejmowania ;)
http://csharp.pastebin.com/f4df1e50d
Niestety, jak widać dla tej kolejki potrzebny jest LINQ i C# 3.0. Bez rozszerzenia First() ciężko by było to nawet zapisać ;)
I przy okazji - serwis pastebin.com, kiedy już nie mamy rafb.net/paste ;) No i pastebin potrafi kod trzymać "forever" podobno :)
poniedziałek, 21 września 2009
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz