SORU
15 Temmuz 2010, PERŞEMBE


Algoritma ilk 10 arama terimleri bulmak için

Şu anda bir görüşme için hazırlık yapıyorum ve böyle bir şey gitti bir kez daha önceki bir röportajda sorulan bir soruyu hatırlattı:

"Sürekli Google'da ilk 10 arama terimleri görüntülemek için bazı yazılım tasarımı istendi. Arama gerçek-zaman sonsuz bir akışı sağlayan bir habere erişim açısından şu anda Google üzerinde aranan verilir. Önce bunu uygulamak için tarif. İki türlü tasarım etmenizi bekliyoruz

(i) tüm zamanların en iyi 10 arama terimleri (beri yani yem okumaya başladım) Görüntüler.

(ıı) geçen ay, saatlik güncelleme için sadece ilk 10 arama terimleri Görüntüler.

Top 10 listesini elde etmek için bir yaklaşım kullanabilirsiniz, ama seçimler haklı göstermek gerekir." < / ^ br . Bu röportajda kaldım ve hala gerçekten bunu uygulamak için nasıl hiçbir fikrim yok.

İlk bölümü sonsuz bir liste sürekli büyüyen alt sıra en sık 10 maddelik sorar. Seçim algoritmaları içine baktım, ama bu sorunu çözmek için herhangi bir çevrimiçi sürümleri bulamadım.

İkinci bölümü sonlu bir liste kullanır, ama bilgilerin büyük miktarda nedeniyle, gerçekten bellekte arama terimleri bütün ay saklamak ve bir histogram her saat hesaplayamazsın.

Sorun daha zor top 10 listesi sürekli güncelleştirilen de zaten, bir şekilde kayan bir pencere içinde ilk 10 değerlenmesi gerekir.

Herhangi bir fikir?

CEVAP
15 Temmuz 2010, PERŞEMBE


Frekans Tahmini Genel Bakış

Bu tür bir akım depolama sabit bir miktar kullanma sıklığı tahminleri sağlayabilir iyi bilinen bazı algoritmalar vardır. BiridirSık sıkParlak ve Gries (1982) tarafından. Listesindennöğeler, daha fazla gerçekleşen tüm öğeleri bulmakn / ktimes, kullanarakk - 1sayaçları. Bu Boyer ve Moore bir yöntemdirÇoğunluğualgoritma (Fischer-Salzberg, 1982)k2. Ulusal Kimya Kongresi ve MotwaniLossyCounting(2002) ve MetwallySpaceSaving(2005) algoritmaları benzer uzay gereksinimleri vardır, ancak belirli koşullar altında daha doğru tahminler sağlayabilir.

Hatırlaman gereken en önemli şey bu algoritmalar sadece frekans tahminler sağlayabilir. Özellikle, Parlak-Gries altında sayısı gerçek sıklığını tahmin tarafından(n / k)öğeleri.

Olumlu bir maddeyi teşhis edebilecek bir algoritma olduğunu varsayalımsadecedaha fazla zaman P den oluşur. Bu akışı algoritması yemNfarklı öğeleri, ve sonra başka bir ekleyinN - 1kopya bir öğextoplam için2N - 1öğeleri. Eğer algoritma bunu söylersexToplam P'sini geçerse, ilk akış içinde olmalıdır; eğer değil . değil ise ^em>xilk akım yoktu. Bu tespiti yapmak için kullanılan algoritma için başlangıç akımı (ya da bazı Özet uzunluğu ile doğru orantılı) saklamak gerekir! Uzay böyle gerektirdiği kendimizi kanıtlayabiliriz "" algoritma olurdu Ω( . tam da bu yüzden ^em>N).

Bunun yerine, bu frekans algoritmalar burada bir tahmin, seçim barajının altında kalan bazı eşyalar ile birlikte aşan herhangi bir madde tespit sağlamak belirli bir farkla nitelendirdi. ÖrneğinÇoğunluğualgoritma, tek bir sayaç kullanarak, her zaman sonuç verir; eğer herhangi bir madde akışı P aşarsa, bulunacaktır. Ama aynı zamanda sadece bir kez oluşan bir öğe verebilir. Veriler üzerinde ikinci bir geçiş (yine, tek bir sayacı, ama yalnızca o öğe arıyor kullanarak) yapmadan anlayamazsın.

Sık Algoritması

İşte Parlak-Gries basit bir açıklama'Sık sıkalgoritma. Demaine (2002) ve diğerleri algoritma optimize edilmiş, ancak bu ana hatlarıyla verir.

Eşik kısmını belirtin1 / k); herhangi bir madde oluşurn / kkat bulunacak. Boş bir harita (kırmızı-siyah ağacı gibi) oluşturmak; anahtarları arama terimleri olacak, ve değerleri o dönem için bir sayaç olacak.

  1. Akışı içinde her öğe bak.
  2. Eğer terim harita varsa, ilişkili sayacı artırmak.
  3. Harita aksi takdirde, daha azk - 1girişleri, bir sayaç ile haritaya terimi ekleyin.
  4. Eğer harita isek - 1girişleri zaten, her girişi sayacı azaltma. Eğer herhangi bir karşı ulaştığı bu süreçte sıfır, harita çıkarın.

Depolama (sadece sabit boyutlu harita) sabit bir miktarda veri sonsuz miktarda işleyebilir unutmayın. Depolama gerekli miktarı faiz barajını sadece bağlıdır, ve akış boyutu önemli değil.

Sayım Arar

Bu bağlamda, belki de seni arar bir saat tampon, ve saatlik veri üzerinde bu işlemi gerçekleştirmek. Eğer bu saatte arama günlüğü üzerinde ikinci bir tur alabilir, "aday" ilk geçiş olarak tanımladı. üst olaylar tam bir sayısını elde edebilirsiniz Ya da, belki de onun için iyi bir tek geçiş ve rapor tüm adaylar, bilerek herhangi bir öğe olmalıdır vardır dahil, ve herhangi bir ekstra sadece gürültü yok olacak. bir sonraki saat.

Gerçekten ilgi barajını aşan herhangi bir aday bir özet olarak saklanır. Bu özetleri, bir aylık, en büyüğü her saat atmak tutmak, ve en yaygın arama terimleri iyi bir yaklaşım olurdu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • MattSteffanina 2

    MattSteffani

    28 Kasım 2007
  • tinycammonitor

    tinycammonit

    14 Aralık 2010