İçeriğe geç

PageRank algoritması

Merhabalar bu yazımda arama motorlarında hangi sayfaların daha üstte yer alacağını sitelerin bir birlerine verdikleri bağlantılara göre karar veren algoritma olan PageRank algoritmasından bahsedip örnek vereceğim.

PageRank algoritması Stanford üniversitesinde ortaya çıkmış Google ile harmanlanmış bir algoritmadır. Google’da sayfaların hangisinin daha önce yer alacağını PageRank algoritmaları sayesinde karar verir. Tabiki günümüzde sadece sitelerin bir birine verdikleri bağlantılar değil buna farklı etkenlerde eklenmiştir. Örneğin sitenin güncellenme sıklığı,responsive tasarım,bilginin kopya veya gerçek olması gibi daha birçok etmen sitelerin sıralamasını etkiler.

SEO ile uğraşan kişilerinde yakından ilgilendiği bir algoritmadır. Çünkü sitelerin bir biri arasındaki doğru hazırlanmış link döngüleri site rankını yükseltmektedir.

Resimde’de görüldüğü gibi En çok link verilen sayfanın puanı daha yüksektir.

Ancak sadece site içerisinde bir birine link veren sayfaların puanı aynıdır.

PageRank algoritması aşağıdaki formul ile gerçekleştirilir.

Bu formülü açıklayacak olursam burada bulunan “d” bir  kişinin her adımda bir sonraki sayfaya da tıklama olasılığı anlamına gelmektedir. Genel olarak 0.85 kabul edilip işlem yapılır. Parantez içerisindeki işlemler ise A’nın link verdiği diğer sayfaların PRleri bölü link verdikleri bağlantı adedidir.

Aşağıda yazdığım PageRank örneğini inceleyip formülü daha iyi anlayabilirsiniz.

Örnekte;

  • A sitesi <-> [B,C] ‘e link verir.
  • B sitesi <-> [A]’a link verir.
  • C sitesi <-> [A,B]’e link verir.
  • E sitesi <-> [C]’e link verir.

Sonuç olarak A ve C sitesinin PR değerleri diğer B ve E’den yüksek çıkmıştır.

let d = 0.85

var a = 0.0
var b = 0.0
var c = 0.0
var e = 0.0

func pageRank(loop:Int) -> [Double] {
    
    var ranks:[Double] = []
    
    for i in 0...loop {
        
        let prA = (1-d) + d * (b/1 + c/2)
        let prB = (1-d) + d * (a/2)
        let prC = (1-d) + d * (a/2 + b/1)
        let prE = (1-d) + d * (c/2)
        
        b = prA
        a = prB + prC
        c = prA + prB
        e = prC
        
        if i == loop {
            ranks.append(prA)
            ranks.append(prB)
            ranks.append(prC)
            ranks.append(prE)
        }
        
    }
    
    return ranks
}

print(pageRank(loop: 5))

Github link.

 

Kategori:Algorithm

Bu yazı yorumlara kapalı.

© 2025 Kenan Atmaca