"Zvláštní" chování programu – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

"Zvláštní" chování programu – Python – Fórum – Programujte.com"Zvláštní" chování programu – Python – Fórum – Programujte.com

 

kuba
~ Anonymní uživatel
59 příspěvků
5. 5. 2010   #1
-
0
-

Dobrý den,
naprogramoval jsem si aplikaci na vyhledávání cest, samozřejmě v pythonu.
Problém je,že i když aplikace vždy najde nejkratší cestu, tak jak má být, tak při využívání stále stejného algoritmu i heuristiky se nalezené cesty pořád mění. Vůbec si nedokážu vysvětlit toto divné chování, jediné, co mě napadá je problém v modulu heapq, který využívám pro implementaci prioritní fronty. Proto se obracím na Vás, jestli by jste to někdo dokázal vysvětlit :)

Nahlásit jako SPAM
IP: 78.128.153.–
Spectator0
Věrný člen
5. 5. 2010   #2
-
0
-

To kuba : Možná chyba v zápisu algoritmu. Takhle se to určit nedá

Nahlásit jako SPAM
IP: 81.19.47.–
. . .
sputnikone+1
Věrný člen
6. 5. 2010   #3
-
0
-

To kuba : Bez kódu ti moc neřeknem...

Nahlásit jako SPAM
IP: 147.251.53.–
kuba
~ Anonymní uživatel
59 příspěvků
6. 5. 2010   #4
-
0
-

Dobře, přihodim sem kód, díky za zájem.

vstupem do algoritmu je mapa, plus počáteční a koncový bod



pathFound = True
openList = []
closedList = []

heapq.heappush(openList, (1 , start))
start.setOnOpenList(True)
start.setG(0)

while end.getOnClosedList() != True:

if len(openList) > 0:
current = heapq.heappop(openList)[1]
current.setOnClosedList(True)
closedList.append(current)
surrounding = current.getSurroundingNodes()

for next in surrounding:

if((next.getCost() > 0) and (next.getOnClosedList() != True)):

if(next.getOnOpenList() != True):
next.setParent(current)
next.setG(current.getG() + next.getCost())
next.setH(next.calcHeuristicTarget(end))
heapq.heappush(openList, (next.getF(), next))
next.setOnOpenList(True)

else:

if(current.getG() > (next.getG() + current.getCost())):
current.setParent(next)
current.setG(next.getG() + current.getCost())
heapq.heappop(openList)
heapq.heappush(openList, (current.getF(), current))

else:
pathFound = False
break

return pathFound, openList, closedList

Nahlásit jako SPAM
IP: 78.128.149.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý