Algoritma aliran data "Divide and Conquer"


12

Algoritma apa yang bermanfaat yang ada di sana yang bekerja pada aliran data besar dan juga hasilnya cukup kecil dan satu dapat menghitung hasilnya untuk campuran dua aliran dengan entah bagaimana menggabungkan hasil mereka?

Saya dapat menyebutkan beberapa:

  • Hal-hal yang jelas seperti jumlah, min, maks, jumlah, top-K dll.
  • Perkiraan algoritma aliran yang disebut "berbasis sketsa" untuk histogram, menghitung item berbeda atau menghitung kuantil

Apa yang ada di sana?

(Saya tertarik karena saya sedang menulis proyek hobi untuk memantau sistem terdistribusi yang kegunaannya ditentukan langsung oleh kegunaan dari algoritma tersebut)


Saya merasa lebih sulit untuk memikirkan algoritma streaming yang tidak "membagi dan menaklukkan" / asosiatif. Mungkin semacam fungsi hash bergulir ... Apakah Anda memiliki contoh alami dari algoritma aliran seperti itu?
Thomas Ahle

Jawaban:


9

Guha et al. '03 memberikan algoritma perkiraan untuk k-median clustering dalam model streaming. Algoritma mereka membagi data menjadi potongan-potongan terpisah, menemukan pusat O (k) untuk setiap potongan terpisah, dan kemudian menggabungkan hasilnya untuk mendapatkan pusat k. Ini sepertinya jenis algoritma yang Anda cari.


7

Makalah oleh Bagchi, Chaudhary, Eppstein dan Goodrich memecahkan sejumlah masalah geometri streaming menggunakan subrutin yang mendasari untuk menghitung jaring dan aproksimasi ruang rentang yang dipilih dengan tepat. Subrutin ini memanfaatkan struktur aditif dari objek-objek ini dengan mengembangkan skema hierarkis untuk menghitungnya (di mana aliran level virtual mengagregasi blok dalam virtual -level stream, dan level 0 adalah stream asli). Ini pada dasarnya adalah rendering bottom up dari strategi memecah belah dan menaklukkan. dengan pembaruan di sepanjang "tepi" pohon rekursi. Secara struktur, ini sangat mirip dengan makalah Guha et al yang disebutkan oleh Lev.ε i th ( i - 1 ) thεεith(i1)th


6

Saya telah menemukan sebuah makalah ( "Mendistribusikan Perhitungan Aliran Data Frekuensi-Ketergantungan" ) yang mengatakan bahwa setiap fungsi distribusi frekuensi aliran dapat digabung (meskipun tidak memberikan konstruksi eksplisit dan efisien untuk operasi penggabungan). Dan buktinya tampaknya sangat menarik, melibatkan beberapa teori cincin. Perlu membaca makalah sebelumnya oleh penulis yang sama ( "Batas bawah pada estimasi frekuensi aliran data" ) yang hasil utamanya digunakan sebagai dasar untuk yang ini.

Ini mengingatkan saya pada Teorema Homomorfisme Ketiga ...


Saya tidak berpikir makalah Ganguly menyiratkan bahwa strategi memecah belah dan menaklukkan dapat bekerja untuk streaming. Model itu tampaknya mengurangi ke model Mapreduce / MUD, di mana mungkin ada beberapa melewati data.
Suresh Venkat

Setelah membaca tampaknya bagi saya bahwa itu tidak menggunakan banyak lintasan.
jkff

4

Penelitian tentang bahasa permintaan aliran berkelanjutan dapat memberikan beberapa wawasan. Salah satu bahasa seperti itu adalah CQL , yang saya percaya sedang diadopsi oleh Oracle. Bahasa memungkinkan fungsi dihitung pada jendela geser aliran (termasuk jendela ukuran 1). Ini tesis sarjana memberikan gambaran terbaru dari bahasa, termasuk beberapa contoh. Makalah ini memberikan ikhtisar dari beberapa bahasa pemrosesan aliran, yang seharusnya berguna untuk menemukan tautan ke penelitian terkait lainnya.

Saya tahu bahwa ini tidak menjawab pertanyaan Anda secara langsung, tetapi itu harus membuat Anda berhubungan dengan penelitian yang dilakukan oleh orang-orang yang berangkat dari titik awal yang sama.


4

Pertanyaan ini sepertinya agak melingkar bagi saya. Jika masalah memiliki properti yang Anda inginkan, maka ada algoritma berbasis sketsa-dan-gabungan untuk itu. Seperti disebutkan di atas, ada pekerjaan pada pengelompokan, perkiraan, dan coreset yang memberi Anda itu. Juga, sebagian besar algoritma streaming memungkinkan penggabungan aliran hanya dengan (secara konseptual) menyatukan satu aliran ke aliran lainnya.

Juga, saya tidak yakin algoritma streaming top-k dapat diterima - tetapi saya mungkin salah.


Top-k dapat digabungkan secara sepele: untuk menggabungkan dua daftar item k, Anda menggabungkannya dan mengambil item terakhir dari k hasil :) Namun, mungkin Anda berarti "top k paling sering", tapi maksud saya yang satu ini (yang juga merupakan masalah yang berguna, misalnya, untuk perhitungan terdistribusi dari sesuatu seperti dinding facebook)
jkff

3

Maaf telah melakukan necromancing untuk hal ini, tapi saya pikir Anda mungkin ingin melihat beberapa pekerjaan tentang pemantauan berkelanjutan yang didistribusikan pada stream, di mana Anda diberikan beberapa stream dan tujuannya adalah untuk memantau beberapa statistik agregat di lokasi pemantauan pusat sambil meminimalkan komunikasi. Model itu bagi saya sangat erat kaitannya dengan motivasi Anda. Lihatlah referensi dalam buku Muthu . Satu kertas adalah ini .

Makalah Ganguly juga sangat menarik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.