Tarjan algoritması, yönlendirilmiş graflarda güçlü bağlantılı bileşenleri (GBB) tespit etmek amacıyla geliştirilmiş bir graf algoritmasıdır. Algoritmanın amacı, bir grafı alt bileşenlerine ayırarak her bileşen içinde çift yönlü erişim imkânı bulunan düğümleri tanımlamaktır. Güçlü bağlantılı bir bileşen, herhangi iki düğüm arasında karşılıklı bir yolun mevcut olduğu alt graflardır.
Tarjan algoritması, derinlik öncelikli arama (DFS) yaklaşımına dayanmaktadır. Her düğüm, keşfedildiği sırada benzersiz bir indeks numarası alır ve bu indeksle ilişkili bir düşük bağlantı değeri hesaplanır. Düşük bağlantı değeri, bir düğümün DFS ağacında kendi alt ağacı içinde ulaşabileceği en düşük indeksli düğümü gösterir. Algoritma, keşif sırasında bir yığın kullanarak geçici olarak düğümleri saklar ve güçlü bir bağlantılı bileşen tamamlandığında ilgili düğümleri yığından çıkararak bileşeni tanımlar.
Tarjan algoritması, aşağıdaki veri yapılarını kullanır:
Tarjan algoritmasının zaman karmaşıklığı O(V + E) şeklindedir. Burada V, düğüm sayısını, E ise kenar sayısını ifade eder. Bu karmaşıklık, algoritmanın her düğümü ve kenarı yalnızca bir kez işlemesinden kaynaklanır. Alan karmaşıklığı ise O(V) düzeyindedir ve bu, kullanılan ek veri yapılarına bağlıdır.
Tarjan algoritması, bilgisayar bilimlerinin çeşitli alanlarında kullanılmaktadır. Öne çıkan kullanım alanları arasında sosyal ağ analizi, derleyici optimizasyonu, web taraması, biyolojik ağ çözümlemeleri, devre tasarımı, bağımlılık çözümlemesi ve ağ güvenilirliği analizi bulunmaktadır.
Aşağıdaki yönlendirilmiş grafiği ele alalım:
Bu grafikte iki adet güçlü bağlantılı bileşen (GBB) bulunmaktadır:
1. DFS Başlangıcı: Düğüm 0'dan başlanır.
2. İndeks ve Düşük Bağlantı Değerleri: Her düğüme sırayla bir index atanır. İlk ziyaret edilen düğümün lowlink değeri kendi index değeriyle başlar.
3. Yığın Kullanımı: Ziyaret edilen düğümler yığına alınır.
4. Geri Kenarlar: Ziyaret edilen bir düğüm, yığında daha önce var olan başka bir düğüme ulaşabiliyorsa, lowlink değeri güncellenir.
5. Bileşen Tespiti: Eğer bir düğümün lowlink değeri kendi index değerine eşitse, bu düğüm bir bileşenin kök düğümüdür. Yığından düğümler çıkarılarak bir güçlü bağlantılı bileşen oluşturulur.
【1】
Tarjan algoritması, 1972 yılında Amerikalı bilgisayar bilimcisi Robert Tarjan tarafından geliştirilmiştir. Algoritmanın tanıtımı, Tarjan’ın "Depth-first search and linear graph algorithms" başlıklı çalışmasıyla yapılmıştır. Tarjan ayrıca splay ağaçları ve Fibonacci yığınları gibi başka veri yapılarının geliştirilmesine de katkıda bulunmuştur.
Tarjan algoritmasına alternatif olarak Kosaraju algoritması da güçlü bağlantılı bileşenleri bulmak için kullanılmaktadır. Kosaraju algoritması iki ayrı DFS geçişi ve grafın ters çevrilmesini gerektirirken, Tarjan algoritması tek bir DFS geçişi ile sonuca ulaşır. Ayrıca, paralel işlemler için geliştirilmiş varyantlar da literatürde yer almaktadır.
[1]
Bileşen içindeki düğümlerin sırası yığından çıkarılma sırasına göre olabilir.
Temel Çalışma Prensibi
Kullanılan Veri Yapıları
Zaman ve Alan Karmaşıklığı
Uygulama Alanları
Örnek Üzerinden Tarjan Algoritması Adım Adım
Kullanılan Grafik
Grafın kenar listesi şu şekildedir:
Algoritmanın Adım Adım İşleyişi
Tarjan Algoritmasının Python Koduyla Uygulaması
Çıktı
Adım Adım Anlatım
Tarihçe
Benzer Algoritmalar ve Varyasyonlar
Bu madde yapay zeka desteği ile üretilmiştir.