Sosyal ağ analizi (SNA) algoritması için sorma

5 Cevap php

Ben bir social graph yapmak görevi almış nerede, bir kullanıcı ile center, o var bağlantılarını gösterir.

Biz ulaşabilir Ama önce, bizim odak biz shortest path 2 kullanıcıları arasında belirlemek nasıl olduğunu.

Bazı algoritma yapmak buldum, ama o zaman bir sürü alır gibi görünüyor, ve sosyal bağlantıları hakkında, çünkü biz yetişmek için düzenli olarak çalıştırmak gerekir, çünkü en hızlı biri arıyor arkadaşlar güncellemeleri.

Yani, iki kullanıcı arasındaki en kısa yolu belirlemek için hızlı yolu olacağını biliyor musunuz?

PS: Eğer PHP ve bir örnek biliyorsanız MySQL, sana sanal bira (ya da kola) verecektir. : D

5 Cevap

Dijkstra's Algorithm bir grafik üzerinde iki düğüm arasındaki en kısa yolu bulur.

ne istediğiniz bir all-pairs shortest path algoritma; Eğer grafik için küresel çiftleri oluşturmak için varsa her çifti için bir kısa yol algoritması çalışan daha hızlıdır. güncellenen tutarak bu başka bir sorun - Eğer Eğer grafiğine bir bağlantı değil, bir kişi eklemek sadece her zaman eklemek her zaman yapmak gerekir unutmayın. Bu bir üretim yeri için ise, daha hızlı php dışında bir dil ile yazılmış bir çevrimdışı görev olarak grafik üretimi, bakımı ve geri db sonuçlarını yazmaya değer olabilir. Muhtemelen orada varolan c + + uygulamalarını bulacaksınız.

Bu zaten bütün grafiğini çizmek için gidiyoruz eğer grafiğe ilave olarak, kolay, her kişinin yolunun takip etmek olurdu gibi geliyor bana. Yani kişinin arkadaşlar için, yol sadece "-> Arkadaşım ana kişi". Sonra grafiğe ONLARIN arkadaşlar her eklenti gibi, yol depolamak "ana kişi -> Arkadaşım 1 -> Arkadaşım 2" vs

Aklımda resim doğru ise, bunu yapmak için en kolay yol gibi görünüyor, ama ben biraz yanlış anlama olabilir.

Dijsktra algoritması ağırlıklı grafikler üzerinde iyi çalışır. Bir sosyal grafik tüm kenarları aynı ağırlığa sahip. Yani Dijkstra'nın algoritması BFS olur. Ancak yoğun grafik üzerinde her düzeyde incelendiğinde düğümlerin listesi çok büyük olacaktır. Yapabileceğiniz tek optimizasyon iki ucunda (A ve B) aramayı başlatmak için olduğunu.

Soru Social network analizi (SNA) ile yapmak daha vardır.

Girdileri [(1) ve (2)] bu wirth olduğu ile ilgili bu wikipedia delving.