Hangi yol bulma algoritmaları var? [kapalı]


Yanıtlar:


34

Genel olarak yol bulma hakkında araştırma yapmak ve öğrenmek istiyorsanız, kesinlikle birden fazla algoritmadan daha fazlasını öğrenmenizi öneririm. Genel kavramları anlamak isteyeceksiniz ancak üzerinde çalıştığınız her şeye uygulayabilirsiniz. Herhangi bir ciddi yol bulma işi yapması gereken çoğu oyun geliştiricisi, bilinen çözümlere dayanmasına rağmen, her oyunda farklı ve farklı gereksinimlere sahip olacak olsa da, kendi özel algoritmalarını yazıyor.

A *, Dijkstra's Algoritması, Derinlik ve Genişlik-İlk aramaları gibi daha iyi bilinen yöntemlerden bazılarını okuyarak başlardım. İnternette bunlardan her biri hakkında birçok iyi bilgi var. ( http://en.wikipedia.org/wiki/Pathfinding )

Bunları okurken, aşağı ve yukarı tarafların her bir yaklaşım için ne olduğuna ve algoritmanın çalışabileceği veri türüne dikkat edin. 3 boyutlu yollara uygulanabilir mi? Haritadaki kara mayınlarından kaçınmak isteyen insan AI'mızı hesaba katabilecek şekilde değiştirilebilir mi?

Yol bulmaya gelince, A * hemen hemen herkesin kullandığı altın bilet. Nasıl çalıştığını kesinlikle bilmelisin. ( http://en.wikipedia.org/wiki/A*_search_algorithm )

Aşağıda, farklı büyüklükteki varlıkları hesaba katması gereken bir RTS oyunu için geçerli olan A * 'nın güzel bir örneği verilmiştir: http://aigamedev.com/open/tutorials/clearance-based-pathfinding/

İyi şanslar!


2
Programcıları hakkında bit için +1 bilinen çözümleri adapte öğrenmek zorunda. Bu, çoğu oyun geliştiricinin anlamadığı bir şey.
Mühendis,

22

Yol bulma algoritmaları temel olarak bir grafik arama problemi çözme algoritmalarıdır.

http://en.wikipedia.org/wiki/Pathfinding#Algorithms

En bilinenleri Djikstra'nın algoritması: http://en.wikipedia.org/wiki/Dijkstra's_algorithm

ve değişken A * arama algoritması: http://en.wikipedia.org/wiki/A*


2
Son bağlantı koptu çünkü * bunun bir parçası olarak görülmüyor: en.wikipedia.org/wiki/A%2A
Hendrik Brummermann

fixx0r3d her iki bağlantı
tenpn

Basit grafik arama algoritmaları, yalnızca yol bulma için temel bilgilerdir.
martinkunev

13

Bu, yol bulmanın tüm yönlerine, sindirimi çok kolay bir yaklaşıma bakarak harika bir başlangıç ​​kaynağıdır.

Amit'in Yol Bulma Üzerine Notları

... Yol bulma, başlangıç ​​noktasından hedefe doğru iyi bir yol bulma sorununu ― engellerden kaçınmak, düşmanlardan kaçınmak ve maliyetleri en aza indirmek (yakıt, zaman, mesafe, ekipman, para vb.). Hareket, bir yol alma ve onun üzerinde hareket etme sorununu ele alır. Çabalarınızı bunlardan sadece birine harcamak mümkündür. Bir uçta, önemsiz bir hareket algoritması ile birleşmiş sofistike bir patlayıcı ...


1
Amit için +1. 10+ yıl önce web sitesinden A * öğrendim.
tenpn

Harika çizimler de. Yüksek kalite.
Maymun

5

Yol bulma oldukça çözülmüş bir sorundur ... buradaki hemen hemen her cevapta belirtildiği gibi, A * 'daki bazı varyasyonlar kullandığınız şey olacaktır.

Bana karşı en büyük zorluk, yolunu nasıl temsil etmek istediğin . Bir ızgara, geçitler, navmeshes, hiyerarşik ızgaralar veya diğer karmaşık yapılar, vb kullanarak

Aklımda belirli referanslar yok, ancak AIGameDev'i keşfetmek , size orada olanlarla ilgili her türlü fikri verecektir.

Sadece her temsilin artıları ve eksileri olduğunu unutmayın; 'en iyisini' bulmakla ilgili değil, oyununuz için en uygun olanı bulmakla ilgili .



4

Orada birkaç yol bulma algoritması var.

En popüler olanlardan biri muhtemelen A * ( A-Star ). Bir hedefe ulaşmak için tahmini maliyetler verebilecek sezgisel bir işleve sahipseniz bu çok kullanışlı bir algoritmadır (örneğin, hedefe görüş hattı mesafesi olabilir). A *, başlangıçtan bitiş noktasına kadar en kısa yolu bulmak için çok kullanışlıdır.

Bunun dışında Dijkstra'nın birkaç öğeden en yakın öğeyi bulmak için çok yararlı olan algoritması da var . Örneğin. Hangi karakterin (veya benzerlerinin) oyun karakterinize en yakın olduğunu bulmak istiyorsanız.

Orada başka algoritmalar da var, ama sanırım A * en popüler olanı. Mat Buckland'ın Örnek Programındaki Kitap Programlama Oyunu AI'da Yol Bulma ile ilgili mükemmel bir bölümü var . Bir kopyasını almanızı şiddetle tavsiye ediyorum. Aksi halde, "Yıldız Arama" aramak için çevrimiçi bilgi bulabilirsiniz.


Aman. Ben bunu yazarken, aynı cevap bir milyonlarca kez verildi. Üzgünüm :)
bummzack

Bahsedilen kitabın aynı zamanda Google Kitaplar’da da bulunduğunu fark ettim. Buradan okuyun: books.google.com/books?id=gDLpyWtFacYC
bummzack



2

Bu çok fazla bir astar değil, ancak geçen sonbaharda geçen algoritmalar sınıfımızda grafik algoritmalarını yoğun bir şekilde tartıştık. Bu kitabı kullandık,

Algoritmalara Giriş, Üçüncü Baskı, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest ve Clifford Stein

http://mitpress.mit.edu/algorithms/

ve ayrıca bir MIT sınıfından youtube derslerine eşlik etti.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/

17., 18. ve 19. Bölümler en kısa yollarla ele alındı.


2

Wikipedia 1'deki [Grafik ve ağaç arama algoritmaları] bölümüne bakın . Onlar hemen hemen Devlet Uzay Aramasının bir çeşitlemesidir, sadece bunların hepsine girmeniz ve farklı oldukları yerleri bulmanız gerekir.

Daha önce ilginç bir şekilde yapılan algoritmalardan biri olan İşbirlikçi Yayılma da var .


+1 İşbirlikçi Yayılma hakkındaki bu belge oldukça ilginç.
Mühendis,

1
Bence bağlantı koptu. Belki de bu doğrudur: scalablegamedesign.cs.colorado.edu/gamewiki/index.php/…
pek

-2

Bu ilginç görünüyor:

http://www.codeproject.com/Articles/455 Acaba A * 'dan daha mı iyi?


Siteye Hoşgeldiniz. Verdiğiniz, cesaret kırıcı olan yalnızca bağlantıya verilen bir cevap olarak bilinir. Cevabınızdaki yöntemin niteliklerini özetlemek daha iyi olacaktır. Daha sonra, metinde düşünmek yerine, basit A ​​* dan daha iyi olup olmadığını iddia edebilirsiniz.
Seth Battin

Cevabınız bu soru için aşağı yukarı eşit görüyorum (ki bu talihsiz). Senden vazgeçmek istemem, sadece girişinizi ilk yazı inceleme sırasına geçirdim . Ne olursa olsun, cevabınızı geliştirmek her zaman beklerim.
Seth Battin

Sadece Seth'in söylediklerini tekrarlayacağım. Özetler.
Gri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.