Cara mendekati masalah terkait grafik Dinamis

15

Saya mengajukan pertanyaan ini di stackoverflow generik dan saya diarahkan di sini.

Akan sangat bagus jika seseorang dapat menjelaskan cara mendekati masalah grafik parsial atau dinamis penuh secara umum.

Sebagai contoh:

  • Temukan Jalur Terpendek antara dua simpul dalam grafik tertimbang yang tidak diarahkan untuk n instance, ketika sebuah tepi dihapus pada setiap instance.(kamu,v)n
  • Temukan jumlah komponen yang terhubung dalam grafik yang tidak terarah untuk n instance ketika tepi dihapus pada setiap instance, dll.

Baru-baru ini saya menemukan genre masalah ini dalam kontes pemrograman. Saya mencari melalui web dan saya menemukan banyak makalah penelitian tentang grafik dinamis [1,2]. Saya membaca beberapa dari mereka dan dan saya tidak bisa menemukan apa pun lurus ke depan (pengelompokan, sparsifikasi dll). Maaf karena tidak jelas.

Saya sangat menghargai jika beberapa dapat memberikan petunjuk untuk memahami konsep-konsep ini dengan lebih baik.


  1. Algoritma Grafik Dinamis oleh D. Eppstein, Z. Galil, GF Italiano (1999)
  2. Jalur terpendek pada grafik dinamis oleh G. Nannicini, L. Liberti (2008)
Prakash
sumber

Jawaban:

12

Sulit memberi Anda teknik konkret karena "dinamis" dapat berarti berbagai hal, dan algoritma / hasil bergantung pada model Anda. Di bawah ini adalah ikhtisar keprihatinan. Berikut adalah makalah yang memberikan ikhtisar tentang beberapa masalah dan model yang berbeda (terkait dengan apa yang dikutip oleh Peter dalam jawaban lain).


Untuk masalah dinamis secara umum, masalah utamanya adalah:

  • apakah Anda ingin solusi yang tepat dalam semua kasus, atau aproksimasi diizinkan?
  • apakah Anda tahu sesuatu tentang perubahan apa yang akan terjadi (misalnya distribusi probabilitas), atau apakah semuanya sama-sama berpeluang?
  • bagaimana algoritma mempelajari tentang perubahan?

Model dinamis tipikal adalah sesuatu seperti berikut:

  1. Diberikan grafik, Anda ingin menghitung beberapa properti. Anda diizinkan menghitung solusi untuk grafik awal.

  2. Anda kemudian diberi tahu satu modifikasi: edge dihapus. Hitung properti pada grafik baru menggunakan sumber daya terbatas .(e,f)

  3. Ulangi 2 untuk kali.n

Dan berikut adalah 3 kemungkinan modifikasi:

  • Anda tidak diperbolehkan menghitung solusi lengkap di awal karena keterbatasan informasi / waktu / ruang (salah satu contohnya adalah algoritma online )

  • Pada langkah 2, algoritma tidak "mengatakan" modifikasi, tetapi harus menemukan modifikasi dalam grafik dengan menanyakan struktur data atau sesuatu.

  • Model terdistribusi (seperti Peter membahas dalam jawaban lain), di mana informasi ditemukan secara lokal dan perhitungan / perubahan dilakukan secara lokal.

Model dinamis biasanya menarik karena keterbatasan sumber daya (mis. Waktu / ruang). Pada langkah 2, jika saya diizinkan menghitung jawaban lengkap (seperti yang saya lakukan pada langkah 1) maka masalahnya mudah, karena itu hanya masalah grafik statis berulang . Kami lebih tertarik pada jumlah sumber daya terkecil yang diperlukan untuk menghitung perubahan.

Lucas Cook
sumber
Terimakasih banyak untuk balasannya. Saya mencoba memahami kerumitan dan cara pemecahan masalah grafik dinamis sederhana parsial.
Prakash
Terimakasih banyak untuk balasannya. Saya akan membaca surat kabar. Saya mencoba memahami kerumitan dan cara pemecahan masalah grafik dinamis sederhana parsial. Sebagai contoh, Diberikan seperangkat kota, dihubungkan oleh jalan, tidak diarahkan dan ditimbang oleh jarak. Temukan jalur terpendek antara 2 kota, pada contoh, ketika jalan diblokir di setiap contoh karena berbagai alasan. Menjalankan Dijkstra misalnya tidak praktis, apakah ada cara untuk mengadaptasi algoritma yang ada seperti A * untuk menyelesaikan masalah ini dengan batasan waktu yang lebih baik, atau pendekatan yang dibahas dalam makalah adalah satu-satunya cara untuk melangkah.
Prakash
A * adalah generalisasi heuristik Dijkstra +; kinerjanya serupa dalam kasus terburuk. Bagi saya, pertanyaan penting untuk masalah Anda adalah "informasi apa yang dapat Anda simpan di antara instance yang akan membuat instance berikutnya lebih cepat?" Misalnya, jika saya menyimpan jalur terpendek sebelumnya, saya akan dapat dengan cepat mengetahui apakah itu "gagal", tetapi tidak ada cara yang jelas untuk menghitung jalur terpendek berikutnya. (Bahkan jika Anda menyimpan k jalur terpendek dari instance sebelumnya, saya menduga ini berlaku untuk setiap k.)
Lucas Cook
(Komentar saya sebelumnya berbicara terutama tentang solusi kasus terburuk. Mungkin Anda peduli dengan kasus rata-rata? Lalu mungkin ada heuristik yang membuat solusi tipe A * yang bagus.)
Lucas Cook
10

Model grafik dinamis telah dipelajari secara intensif dalam komputasi terdistribusi. Untuk algoritma terdistribusi, perhitungan disusun menjadi beberapa putaran dan topologi grafik (= jaringan) dapat mengalami beberapa perubahan dari putaran ke putaran, yang berada di bawah kendali musuh. Selain itu, setiap simpul grafik menjalankan algoritme yang dapat mengirim pesan ke tetangganya (saat ini!). (Pesan ini adalah input dari algoritma tetangga di babak berikutnya.) Yang membuat segalanya menarik, adalah bahwa sebuah simpul tidak "melihat" seluruh grafik tetapi hanya lingkungan lokalnya.

Masalah yang dipertimbangkan dalam pengaturan ini adalah misalnya penyebaran informasi di mana setiap node dalam grafik awalnya memegang token dan akhirnya Anda ingin bahwa setiap node telah melihat setiap token. Tujuannya adalah untuk merancang algoritma yang mencapai ini dalam jumlah putaran terkecil, menggunakan jumlah pesan paling sedikit. Lihat [2] untuk survei terbaru.

Untuk pengaturan yang tidak didistribusikan, Anda mungkin ingin melihat [1], yang merupakan perpanjangan dari makalah yang telah Anda sebutkan.


[1] Aris Anagnostopoulos, Ravi Kumar, Mohammad Mahdian, Eli Upfal, Fabio Vandin: Algoritma pada grafik yang berkembang . ITCS 2012: 149-160

[2] Fabian Kuhn, Rotem Oshman: Jaringan dinamis: model dan algoritma . SIGACT News 42 (1): 82-96 (2011)

Peter
sumber
Tidakkah algoritme passing-pesan tersebut memiliki masalah dengan (kurangnya) konvergensi?
Raphael
Tidak yakin saya mengerti apa yang Anda maksud dengan "konvergensi". Selama grafik tetap terhubung di setiap putaran, jumlah node yang telah melihat token tertentu akan meningkat setidaknya 1. Jadi, setelah putaran n semua orang akan melihat t, tidak peduli bagaimana musuh mengubah topologi.
Peter
Saya sedang memikirkan masalah count-to-infinity yang disebabkan oleh perubahan topologi.
Raphael
@Raphael Dalam dinamika terdistribusi, peneliti biasanya menyelidiki dengan properti apa yang dapat dijamin terburuk dalam jangka waktu tertentu. Dengan demikian "konvergensi" tidak dapat dijamin untuk distance-vector / Bellman-Ford karena masalah mendasar dengan teknik dalam lingkungan yang dinamis. Ada protokol routing konvergen lain yang tidak memiliki masalah count-to-infinity.
Lucas Cook
3

Membangun jawaban @Peter (ini adalah komentar yang sangat panjang, jadi saya hanya memasukkan sebagai jawaban bahwa seseorang akan mendapat manfaat darinya).

Saya akan menyarankan referensi berikut:

Arnaud Casteigts, Paola Flocchini, Walter Quattrociocchi, Nicola Santoro: Grafik yang bervariasi waktu dan jaringan dinamis. IJPEDS 27 (5): 387-408 (2012)

Δ

Yang benar-benar penting dari klasifikasi ini adalah bahwa ada hubungan inklusi antara kelas-kelas yang berbeda. Jadi, jika Anda memecahkan masalah di kelas tertentu, Anda akan menyelesaikannya di setiap kelas lain yang termasuk di dalamnya.

Penulis yang sama mempresentasikan algoritma penyiaran pada beberapa grafik yang disebutkan. Mereka memberikan metrik kinerja yang berbeda terkait dengan waktu (yaitu definisi yang berbeda dari waktu terpendek). Dalam penyiaran, idenya adalah bahwa setiap node membangun tampilan jaringan dalam domain waktu. Ini dilakukan dengan berulang kali mendengarkan tetangga, dan mengirim informasi ke tetangga. Jika mengasumsikan periodisitas, maka suatu node dapat mengetahui jalur waktu terpendek ke node lainnya. Ia menggunakan informasi ini dalam perutean. Rincian lebih lanjut dapat ditemukan di:

Arnaud Casteigts, Paola Flocchini, Bernard Mans, Nicola Santoro: Komputasi Deterministik dalam Grafik Bervariasi Waktu: Penyiaran di bawah Mobilitas Tidak Terstruktur. IFIP TCS 2010: 111-124

kamuv{(kamu,x1),(x1,x2),....,(xk,v)}kamuvvkamu

Saya menghadiri kuliah oleh penulis sebelumnya. Dari pemahaman saya, mereka mengklaim bahwa kami jauh dari mampu berurusan dengan algoritma grafik dinamis (mengikuti definisi yang mereka ikuti). Bahwa kita masih dalam kasus kelas sederhana. Bahkan, mereka mengklaim bahwa sebagian besar algoritma komputasi mobile hanya berasumsi bahwa algoritma mereka terlalu cepat untuk dieksekusi ketika jaringan sedang dalam transisi! (yang saya percaya saya banyak mendengar) - Atau sederhananya, anggap periodisitas penampilan tepi (lihat penundaan jaringan toleran dll)

Dipotong
sumber