Dijkstra Algoritması

Dijkstra nın en kısa yol algoritması verilen bir grafikte başlangıç noktasından bitiş noktasına en kısa yoldan nasıl gidilebileceğini hesaplar. Edsger Dijkstra tarafından 1959 yılında tasarlanmıştır.

 

Algoritma :

 

1. Başlangıç noktası hariç bütün köşelerin(node) değerini sonsuz yapın. Başlangıç noktasını 0 yapın.

2. Bütün köşeleri ziyaret edilmemiş(unvisited) olarak işaretleyin. Başlangıç noktasını priority queue a atın.

3. Queue e boşalana kadar, queue nin başındaki köşeyi çekin. Köşeyi ziyaret edilmiş olarak işaretleyin. Köşenin bütün komşuları ziyaret edin. Eğer giderken bulduğunuz değer köşenin değerinden azsa, ziyaret köşenin değerini güncelleyip queue a atın. Eğer ziyaret edilen köşenin değeri azsa hiçbir şey yapmayın.

 

 

Örnek:

 

Grafiğimiz şekildeki gibi olsun.

 

image

 

 

 

 

 

  • Başlangıç noktamız A olsun. A nın değerini 0, diğer noktaların değerini sonsuz yaparak, A yi queue a atıyoruz.

 

dikstra1

 

 

 

 

 

 

  • Queue den A yı alıp B ve C nin değerlerini güncelliyoruz. A nın yi ziyaret edilmiş olarak işaretliyoruz.

 

dikstra2

 

 

 

 

 

Queue den C yı alıp B, D ve E nin değerlerini güncelliyoruz. C nın yi ziyaret edilmiş olarak işaretliyoruz.

 

dikstra3

 

 

 

 

 

  • Queue den E yi alıyoruz. E den D ye 14 ile gidebiliyoruz ama D nin değeri 11 olduğu için değiştirmiyoruz. E yi ziyaret edilmiş olarak işaretliyoruz.

 

 

dikstra4

 

 

 

 

 

Queue den B yı alıp D nin değerini güncelliyoruz. B nın yi ziyaret edilmiş olarak işaretliyoruz.

 

 

  • dikstra5

 

 

  • Queue den D yi alıp ziyaret edilmiş olarak işaretliyoruz.

Leave a Reply