2009-10-28 7 views
7

Çok iş parçacıklı bir A * araması yapmanın iyi bir yolu var mı? Tek bir iş parçacığı, (örneğin) Yapay Zeka: Modern Bir Yaklaşımda verildiği gibi oldukça kolaydır, ancak çok iyi bir çok iş parçacıklı versiyona rastlamadım.Java ya da C# ya da Lisp gibi aklı havuzları ve çalışma blokları ve elbette çöp toplama gibi bir aklı başında konuşun.Çok iş parçacıklı A * Java veya Lisp veya C içinde arama #

+2

Çöp almayan toplanan diller aklı başında değil mi? – BobbyShaftoe

+1

A * için değil! –

+1

A * için çöp toplamanın gerekli olduğunu sanmıyorum. Sıralı A * oldukça basittir. Paralel A *, bazı iş yükü sorunları var. – BobbyShaftoe

cevap

7

bu kağıdı okumanızı tavsiye:

"Paralel çift yönlü A * bir simetri çok işlemcili arama"

denilen de IEEE başka kağıt da vardır

: iletide

"Paralel Astar arama geçişli mimariler "

Her iki makale de oldukça hızlanma kazanmak için yeni yöntemler buluyor.

+1

Linkler yardımcı olacaktır. –

+3

@StevenRoose Başlıkların basit bir google araması, ilk arama sonucu olarak her iki makaleyi de verecektir. Her ne kadar uygunsa, nezaket dışı bağlantılar kurarsam da. Ancak, burada kaynak olarak IEEE makalelerini kullanmayla ilgili en büyük meselem, IEEE makaleleri için kapsanan bir kuruma henüz kayıtlı olmayanlar için genellikle özgür olmadıklarıdır. – Gurgadurgen

+0

Yanıtı nasıl yaparsınız? – quimnuss

1

Ne dediğinizi duyuyorum ama isteyeceğinizden emin değilim. Bir A * aramada en uygun yolu almak ve aynı yol için iki kez herhangi bir hesaplama yapmak istemezsiniz. gerçeklere

Görünüş:

  • 'en iyi' kareler seçmek için 'en iyi' seçenek dışında başka kare diğeri için hesaplanması tüm birbirinden
  • yanındadır prematüre hesaplama. A * noktası, seçimlerin verimli olması.

Eğer gerekir uygulamayı dişli ise: sırayla

bir 'Waiter'
  • hiçbir iplik aynı kare dokundu emin olmak için ve onlara caclulate yeni kareler vermek. Her şey, 'en iyi' meydanların birbirinin yanında olması nedeniyle, yol kaynakları için mücadele edecekleri sıkı bir örgü alanında çalışacaklardı.

Bu sorun işlemseldir ve ayrı parçalara ayırmanın iyi bir yolu yoktur ve bu nedenle iş parçacığı için iyi bir seçim değildir. Kısacası kimse bunu yapmamıştır, çünkü yapılması istenen bir şey değildir. Umarım bu yardımcı olur.

+0

Fazladan iş yapabileceğiniz doğru, ancak özellikle de arama alanınız büyükse veya zayıf bir sezginiz varsa, günümüzde var olan birçok donanım dizisinden yararlanabileceğiniz yeterince boşa harcanmamış bir iş yaptığınız bir algoritma hayal edebiliyorum. –

+0

Evet ama tüm 'en iyi' kareler birbirinin yanında.Bu sadece amacınız tek bir nokta değilse yardımcı olur. Amacınız bir odanın herhangi bir duvarına gitmekti ise, o zaman threading güzel olurdu çünkü her bir duvar için oda için bir iplik yapabilir ve ona koşup en iyi ipin sonucunu alabilirsiniz. Ancak tek nokta A * araması için bu iyi bir fikir değildir. –

+0

Sadece boşa harcanan iş meselesi değil, aynı zamanda iplikleri koordine ederek ortaya çıkan yük vardır. – meriton

İlgili konular