sosyal bir ağ olarak ifade:Birliği-bulmak Bu ben cevap çalışıyorum bir görüşme sorudur
N
üyeleri içeren bir sosyal ağ ve üyelerinin süreleri çiftleri meydana geldiğiM
damgaları içeren bir günlük dosyası Verilen Arkadaşlıklar, tüm üyelerin bağlı olduğu en erken zamanı belirlemek için bir algoritma tasarlar (yani, her üye bir arkadaşın arkadaşının arkadaşıdır). Günlük dosyasının zaman damgasıyla sıralandığını ve arkadaşlığın eşdeğer bir ilişki olduğunu varsayalım. Algoritmanızın çalışma süresiM log N
ya da daha iyisi olmalı veN
ile orantılı ekstra alan kullanmalısınız.
Düşündüğüm ilk şey ... "Bunu yapamam!". Ancak bu sosyal ağın nasıl bir veri yapısı olarak ifade edilebileceğini düşündüm. Sendika bulmak, kullanılabilecek bir veri yapısıdır. Şimdi tüm üyeler bağlandığında ne anlama geldiğini anlamalıyım. Her üye birbiriyle arkadaş olunca gerçek veri yapısını ve neye benzediğini nasıl görebilirim?
Sadece görsel olarak veya kavramsal olarak sistemin tam olarak nasıl bağlanacağını anlayana kadar, o olaya karşılık gelen zaman damgasını nasıl bulacağımı anlamaya başlıyorum.
Doğru yoldasınız (iyi!). Kenarların ağırlıklarının zaman damgalarıyla belirlendiği minimal bir ağaç bulmak - bunu yapmanın bir yolu [Kruskal algoritması] kullanmaktır (http://en.wikipedia.org/wiki/Kruskal's_algorithm). sendika bulmak veri yapısını dahili olarak. –