İnsanların A * yol bulma algoritmasının basit, optimize edilmiş uygulamalarının kodunu her dilde göndermelerini sağlayabilir miyiz?
Bu çoğunlukla eğlence için ve aslında bir ActionScript 3 sürümünü edinmekle ilgilenmeme rağmen, stackoverflow'un yapabileceği şeylerle oynamak.
Fakat fikir şu ki, bu "Soru" farklı programlama dilleri oluşturulmuş olsa bile sonsuza dek gelecekte güncellenmeye devam edecek!
İnternette "çevrilmiş" sözde kodları görebileceğiniz başka hiçbir yerde bilmiyorum (her biri daha az). Bu değerli bir kaynak gibi görünüyor ve bu sitenin ne için tasarlandığı önemli olmasa da, denemenin ve yığılma akışının kullanabileceği değerli bir şey olup olmadığına bakmanın hiçbir zararı yok!
Çok basit, ancak bazı parameleri değiştirebilirsiniz (ızgara boyutu, duvar sayısı, hata ayıklama bilgisi açma/kapama). İncelenen her düğüm için hesaplanan f (x), g (x) ve h(x) değerlerini gösterir.
Demo sayfası uygulaması jQuery kullanır.
İşte bir C++ uygulaması. Şimdilik oldukça iyi bir şekilde test edildi ve ticari video oyunlarında ve çeşitli AI projelerinde kullanıldı.
Ve aslında ilk yazdığım bir ders var:
İşte bir C # uygulaması dili oluşturan insanlardan biri tarafından yapıldı.
Farklı programlama dillerinde kaynak kodları ve demolar:
Her dil için demo'nun listesi:
C++: 1 Java: 3 Processing: 1 Actionscript 3 (Flash): 4 Flex (Flash): 1 Javascript: 6 C#: 1 Ruby: 1 Prolog: 1 Unity: 1 Lua: 1
Keyfini çıkarın :)
Python ve C++ kaynak kodu ile birlikte etkileşimli öğretici . Kod genel olarak grafikler üzerinde çalışmak için yazılmıştır ve ızgaralara özgü değildir (web üzerindeki A * örneklerinin çoğunda bulacağınız gibi). Öncelik kuyruğu için ikili yığınlar kullanır (hem Python hem de C++ standart kütüphanelerinde ikili yığınlara sahiptir). Bu sayfada Breadth First Search, Dijkstra Algoritması ve A * var. Kod oldukça kısa (bulabildiğim çoğu A * örnek kodundan daha kısa).
Bir AS 3 örneği ... http://www.dauntless.be/astar/
Bir uygulama değil, fakat http://theory.stanford.edu/~amitp/GameProgramming/AStarComparison.html 'nin algoritmanın özellikle açık bir açıklaması olduğunu gördüm. Açık ve kapalı kümeleri uygulamak için kullanılabilecek çeşitli veri yapılarının genişletilmiş bir incelemesinin yanı sıra, açık ve kapalı kümeleri uygulamak için kullanılabilecek çeşitli veri yapılarının geniş kapsamlı bir incelemesinin yanı sıra, özel davranışlar elde etmek için sezgisel değişiklikler (örneğin, sadece sınırlı hareket açısını destekleyen sistemlerde düz çizgiler yaklaşımı), genel tuzaklar (örneğin, gerçek hareket maliyetlerine farklı ölçeklerde bir sezgisel kullanma) ve bazı optimizasyonlar (örneğin, bir Kafes).
Bir VB6 uygulaması.
Bu özellikle yararlıdır çünkü işlem boyunca adım atabilir ve algoritmanın nasıl çalıştığını iyi anlayabilirsiniz. Algoritmayı başka bir dile çevirirken bu oldukça değerli olabilir.
C * 'yi C'yi öğrenme yolu olarak kullandım, bu yüzden güzel olacağına söz veremem, ama işe yarıyor! Bunu Euler # 83 Projesini çözmek için kullandım ve iki test üzerinde çalıştı.
GraphHopper'da optimize edilmiş Java uygulaması mevcuttur.