![]() | |||||||||||||||||
Dijkstra Algoritması | 15.08.2007 12:23:00 | ||||||||||||||||
| Kategori : Visual C# .NET Özet : Dijkstra Algoritması, ismini bulucusu Alman bilim adamı Edsger Dijkstra'dan almıştır. Dijkstra algoritması bağlı olan düğümler arasında en kısa yolu bulmaya yarayan bir algoritmadır. Çok sık olarak ağ yapılarında, oyun programlamada ve ulaşımda kullanılır. Örnek vermek gerekirse Türkiye sınırları içerisinde dağıtım yapan bir kargo şirketi şehirlerarası yolları kullanarak bir ilden bir ile en kısa yoldan nasıl gidilebileceğini bu algoritma sayesinde bulabilir. | |||||||||||||||||
Dijkstra Algoritması, ismini bulucusu Alman bilim adamı Edsger Dijkstra'dan almıştır. Dijkstra algoritması bağlı olan düğümler arasında en kısa yolu bulmaya yarayan bir algoritmadır. Çok sık olarak ağ yapılarında, oyun programlamada ve ulaşımda kullanılır. Örnek vermek gerekirse Türkiye sınırları içerisinde dağıtım yapan bir kargo şirketi şehirlerarası yolları kullanarak bir ilden bir ile en kısa yoldan nasıl gidilebileceğini bu algoritma sayesinde bulabilir. Algoritmayı aşağıda oluşturduğumuz bir örneklem üzerinden açıklayacağım. Aşağıdaki L matrisi bağlı olan şehirlerin arasındaki uzaklığı bize göstersin. Aşağıdaki resimde bağlı olan şehirler gösterilmiştir.
Problemimiz yukarıdaki şekilde A noktasından diğer noktalara en kısa yolu kullanarak gitmektir. Her bir düğüm için bu algoritmayı kullanarak en kısa yolu bulacağız. int[,] L ={
{-1, 5, -1, -1, -1, 3, -1, -1},
{ 5, -1, 2, -1, -1, -1, 3, -1},
{-1, 2, -1, 6, -1, -1, -1, 10},
{-1, -1, 6, -1, 3, -1, -1, -1},
{-1, -1, -1, 3, -1, 8, -1, 5},
{ 3, -1, -1, -1, 8, -1, 7, -1},
{-1, 3, -1, -1, -1, 7, -1, 2},
{-1, -1, 10, -1, 5, -1, 2, -1}
};
D matrisimiz bize gideceğimiz düğümlere olan o anki uzaklığı gösterecektir. Algoritma bittikten sonra D matrisi her bir düğüm için en kısa yolu gösteriyor olacaktır. C matrisi daha en kısa yolu bulmadığımız şehirleri gösterecektir (0->A düğümü 1->B düğümü ...vs.). Düğümlere gidecek en kısa yolu bulduğumuzda bu şehirleri teker teker C matrisimizden çıkartacağız. C matrisinde en kısa yolu bulunacak olan düğüm kalmadığında algoritmamız bitmiş olacaktır. Pseudocode
Yukarıdaki Pseudocode da anlatıldığı gibi A düğümünden başlıyoruz ve bize komşu olan düğümler için yol uzunluğunu D matrisine yazıyoruz. Daha sonra bu D matrisinde en kolay gidilebilecek olan düğümü alıp bu düğüm için gidilebilecek tüm düğümler için D matrisini yeniliyoruz. D matrisinde düğüme giden birden fazla yol olduğunda en kısa olanı alıyoruz. Her bir düğüm için bu işlemi yaptığımızda en son elimizde kalan D matrisi bizim en kısa yolumuz olacaktır.
Örnek Kod
Kod'daki herhangi bir hata için çekinmeden mehmetaliecer@gmail adresine mail atabilirsiniz.
İyi çalışmalar Mehmet Ali ECER
| |||||||||||||||||
Yazgelistir.com | |||||||||||||||||