Tüm yazılar
Matematik27 Şubat 2026

Dijkstra Algoritması: Navigasyon Uygulamanız En Kısa Yolu Saniyede Nasıl Buluyor?

Bir şehirde binlerce yol arasından en hızlı rotayı bulmak — telefonunuz bunu göz açıp kapayana kadar yapıyor. Arkasındaki fikir, bir matematikçinin 20 dakikada, kâğıt kalem bile kullanmadan tasarladığı zarif bir algoritma.

Matematik Karavanı Editörü 8 dk okuma 5 soru
Bir şehir haritası üzerinde iki nokta arasındaki en kısa rotayı vurgulayan görsel

Günde Milyarlarca Kez Sorulan Soru

Telefonunuzdaki harita uygulamasına bir adres yazarsınız ve saniyeler içinde, binlerce olası yol arasından en kısa (veya en hızlı) rotayı önünüze koyar. Bu, o kadar sıradan görünür ki, ardındaki matematiğin ne kadar zarif olduğunu çoğu zaman fark etmeyiz.

Bu problemin kalbinde, daha önce Königsberg köprülerinde tanıştığımız graf teorisi yatar: Şehirdeki kavşaklar düğümler, yollar ise düğümleri bağlayan kenarlardır. Her kenarın bir "ağırlığı" vardır — o yolun uzunluğu ya da kat etme süresi. Soru şu: İki düğüm arasında, toplam ağırlığı en küçük olan yol hangisidir?

(Dikkat: Bu, daha önce gördüğümüz Gezgin Satıcı Problemi'nden farklıdır. TSP "tüm şehirleri dolaşıp dönmenin" en kısa yolunu arar ve çözmesi çok zordur. Burada ise sadece "A'dan B'ye" en kısa yol aranıyor — ve bunun hızlı, kesin bir çözümü vardır.)

20 Dakikada Doğan Bir Fikir

Bu problemi zarif biçimde çözen algoritmayı, Hollandalı bilgisayar bilimci Edsger W. Dijkstra 1956'da tasarladı. Hikâyesi şirindir: Dijkstra, bu algoritmayı bir kafede, nişanlısıyla alışveriş yaparken, kâğıt kalem bile kullanmadan, yaklaşık 20 dakikada kafasında geliştirdiğini anlatır. (Aslında problemi, yeni bir bilgisayarın yeteneklerini sergilemek için "iki şehir arası en kısa yol" örneğiyle göstermek istemişti.)

Bugün Dijkstra algoritması olarak bilinen bu yöntem, bilgisayar biliminin en temel ve en çok kullanılan algoritmalarından biridir.

Algoritma Nasıl Çalışır? — Sezgisel Anlatım

Dijkstra'nın fikri, bir tür "yayılan dalga" gibi düşünülebilir. Başlangıç noktasından başlayarak, en yakın yerleri adım adım, en yakından en uzağa doğru keşfeder:

  1. Başlangıç düğümüne "0" mesafe atayın; diğer her yere "sonsuz" (henüz bilinmiyor).
  2. Henüz ziyaret edilmemiş, en yakın düğümü seçin.
  3. O düğümün komşularına bakın: Oraya bu düğüm üzerinden gitmek, şimdiye kadar bilinen yoldan daha kısa mı? Eğer öyleyse, o komşunun mesafesini güncelleyin.
  4. Bu düğümü "ziyaret edildi" olarak işaretleyin ve 2. adıma dönün.

Bu süreç, en yakın yerlerden başlayarak tüm haritaya yayılır. Anahtar fikir açgözlülüktür (greedy): Her adımda "şu an bilinen en yakın yeri" kesinleştirir. Bir düğüm "ziyaret edildi" olarak işaretlendiğinde, ona giden en kısa yol kesin olarak bulunmuştur — daha sonra daha kısa bir yol bulunması imkânsızdır. İşte algoritmanın hem hızlı hem de kesin doğru olmasını sağlayan zarafet budur.

Neden Bu Kadar Önemli?

Dijkstra algoritması (ve onun gelişmiş akrabaları), modern dünyanın görünmez bir altyapısıdır:

  • Navigasyon (GPS): Google Maps, Yandex, araç navigasyonları — hepsi en kısa yolu bulmak için Dijkstra'nın fikrini (genellikle "A*" denen hızlandırılmış bir versiyonunu) kullanır.
  • İnternet yönlendirme: Verilerin internette bir bilgisayardan diğerine en verimli yoldan ulaşması, ağ yönlendirme protokolleri sayesinde olur — bunlar da en kısa yol algoritmalarına dayanır.
  • Uçuş ve kargo planlaması: En ucuz/en hızlı aktarmalı rotaları bulmak.
  • Oyunlar: Bir oyun karakterinin haritada engelleri aşıp hedefe en kısa yoldan ulaşması (yapay zekâ "yol bulma").
  • Sosyal ağlar: İki kişi arasındaki "en kısa bağlantı zinciri" (daha önce Erdős sayısında ve graf teorisinde gördüğümüz fikir).

Bir İnce Ayar: Negatif Yollar

Dijkstra algoritmasının güzel ve hızlı çalışmasının bir koşulu vardır: Yol ağırlıklarının negatif olmaması. Yani "bir yolu kullanınca zaman kazanırsınız" gibi negatif mesafeler varsa, Dijkstra'nın açgözlü mantığı şaşabilir. (Gerçek haritalarda mesafeler hep pozitif olduğu için bu pratikte sorun değildir; ama bazı soyut problemlerde negatif ağırlıklar için başka algoritmalar — örneğin Bellman-Ford — gerekir.) Bu, algoritmaların hangi koşullarda çalıştığını anlamanın neden önemli olduğunu gösterir.

Sonuç

Dijkstra algoritması, "iki nokta arasındaki en kısa yolu nasıl buluruz?" gibi günlük bir sorunun, ne kadar zarif bir matematiksel fikirle çözüldüğünün muhteşem bir örneğidir. Königsberg köprülerinden başlayan graf teorisi, burada her gün cebimizde kullandığımız bir araca dönüşür.

Bir kafede, 20 dakikada, kâğıt kalem bile kullanmadan doğan bu fikir, bugün gezegendeki milyarlarca insanın yolunu buluyor. Bir sonraki sefer navigasyon size "en hızlı rota bulundu" dediğinde, arka planda Dijkstra'nın o zarif "yayılan dalgasının" çalıştığını hatırlayın.

Etiketler

dijkstragraf teorisialgoritmaen kısa yol

Kendinizi Test Edin

Cevaplarınız profilinizde istatistik olarak saklanır.

1. Dijkstra algoritması hangi problemi çözer?

2. Dijkstra algoritması ile Gezgin Satıcı Problemi (TSP) arasındaki fark nedir?

3. Algoritmayı tasarlayan Edsger Dijkstra bunu nasıl geliştirdi?

4. Dijkstra algoritmasının temel ("açgözlü") fikri nedir?

5. Aşağıdakilerden hangisi Dijkstra algoritmasının (veya akrabalarının) bir uygulamasıdır?