Menemukan segitiga dalam grafik: pendekatan lain selain pengujian properti?

8

Kami sedang mengerjakan kertas yang menyajikan beberapa algoritma untuk menemukan segitiga dan motif jaringan (subgraph ukuran konstan, juga dikenal sebagai graphlets) dalam pengaturan terdistribusi. Kami mencirikan pertukaran antara jumlah segitiga dalam grafik dan beban komunikasi yang diperlukan. Saya mencari referensi untuk pekerjaan yang dilakukan pada pertanyaan ini dalam model terpusat.

Masalahnya adalah bahwa hampir semua yang saya temukan pada topik ini yang memiliki cita rasa teoritis dalam kerangka pengujian properti . Untuk mengilustrasikan perbedaan - perhatikan kasus grafik dengan simpul, yang terdiri dari n - 2 segitiga semua berbagi tepi ( 1 , 2 ) . Dari sudut pandang pengujian properti, grafik ini sangat dekat dengan bebas segitiga (menghilangkan sisi kritis yang berfungsi), sedangkan grafik memiliki jumlah linier segitiga, yang banyak menurut standar kami.nn2(1,2)

Referensi apa pun akan dihargai.

Sunting: Saya terutama tertarik pada algoritma yang dapat menentukan apakah grafik berisi segitiga dengan cepat. Untuk algoritma daftar segitiga (atau subgraph lainnya), waktu berjalan secara alami dibatasi dari bawah dengan jumlah segitiga dalam grafik, karena algoritma perlu membuat daftar semuanya, membuat contoh seperti itu lebih sulit dalam arti tertentu. Dari sudut pandang masalah keputusan ("bebas segitiga atau tidak"), memiliki banyak segitiga sebenarnya membuat masalah lebih mudah, karena Anda dapat dengan mudah menemukannya.

Shir
sumber
2
Mengingat tanggapan David, saya tidak yakin lagi mengerti apa yang Anda inginkan. Anda tidak menyukai kerangka pengujian properti, tetapi Anda ingin batas kompleksitas kueri? Apakah contoh yang Anda berikan dalam pertanyaan adalah kasus buruk karena Anda ingin memperkirakan jumlah segitiga juga?
Suresh Venkat
1
Inilah yang saya inginkan - algoritma probabilistik, yang menanyakan grafik, dan mampu serta membedakan antara grafik dengan banyak segitiga hingga grafik tanpa grafik. Lihat misalnya dl.acm.org/citation.cfm?id=1873611 oleh Gonen, Ron dan Shavit. Namun, dalam makalah mereka kueri dibatasi (misalnya, jika saya mengerti dengan benar, permintaan tepi tidak diizinkan, kecuali sampel dari distribusi yang seragam).
Shir
1
Jadi Anda ingin algoritma sublinear yang memperkirakan jumlah segitiga?
Suresh Venkat
2
beberapa pengamatan sederhana: katakanlah Anda memiliki segitiga T dan Anda diizinkan pengacakan; maka Anda dapat sampel: (1) tepi dan Anda akan menekan segitiga dengan probabilitas setidaknya ~ T ^ {2/3} / m karena jumlah minimum tepi yang dapat Anda miliki dalam grafik dengan segitiga T adalah ~ T ^ {2/3}; setelah Anda memiliki edge, Anda dapat memeriksa apakah ada dalam segitiga dalam n langkah, sehingga Anda mendapatkan algoritma runtime yang diharapkan ~ mn / T ^ {2/3}; (2) Anda dapat memilih tiga simpul acak dan dengan probabilitas T / n ^ 3 itu akan menjadi segitiga sehingga ini memberi Anda runtime ~ n ^ 3 / T. Anda juga dapat melakukan beberapa hal yang sedikit lebih canggih. Apakah ini membantu?
virgi
2
Oh, dan juga, algoritma apa pun yang dapat mendeteksi apakah grafik yang diberikan mengandung segitiga dalam waktu ~ n ^ {3-eps} dapat dikonversi menjadi yang dapat mengalikan nxn matriks Boolean dalam waktu ~ n ^ {3-eps / 3} waktu Algoritme deteksi segitiga sederhana yang menarik untuk alasan ini juga, meskipun tentu saja contoh sulitnya adalah ketika Anda perlu membedakan antara kasus segitiga 0 atau 1, dan untuk kasus ini kami tidak tahu apa pun yang lebih baik daripada komputasi kubus dari matriks kedekatan.
virgi

Jawaban:

9

Untuk beberapa referensi untuk masalah pengujian untuk keberadaan segitiga (tepatnya, tidak dalam kerangka pengujian properti), lihat Grafik bebas segitiga di Wikipedia. Khususnya Alon, Yuster, dan Zwick (ESA'94) memberikan algoritma O (m ^ {1,41}), dan itu juga dapat dilakukan dalam waktu multiplikasi matriks cepat yang lebih baik untuk grafik padat.

Jika Anda setuju dengan sesuatu dalam pengaturan algoritma grafik dinamis, saya juga punya satu untuk menghitung segitiga:

Indeks h dari grafik dan penerapannya ke statistik subgraph dinamis, D. Eppstein dan ES Spiro, arXiv: 0904.3741 dan WADS 2009.

Dalam makalah kami, kami mengutip Chiba dan Nishizeki (SICOMP 1985) dan Itai dan Rodeh (SICOMP 1978) untuk fakta-fakta dasar algoritma-statis bahwa sebuah grafik dengan tepi m dapat memiliki paling banyak segitiga O (m ^ {3/2}) di kasus terburuk dan bahwa mereka dapat dicantumkan dalam jumlah waktu itu.

David Eppstein
sumber
Terima kasih atas balasan cepatnya. Sekarang saya mengerti bahwa saya tidak jelas dalam pertanyaan saya tentang apa yang sebenarnya kita cari. Saya secara alami melihat referensi di Wikipedia, tetapi mereka tidak cocok, karena saya sedang mencari sesuatu dalam domain kompleksitas kueri, atau waktu berjalan untuk beberapa algoritma probabilistik. Saya akan mengedit pertanyaan untuk mencerminkan itu. Jadi pilihlah jawabannya, tetapi saya tidak akan menerimanya, karena saya masih mencari jawaban. :)
Shir
3

Ω(n2)nO(n2)


Jika Anda ingin melihat alasannya, pertimbangkan keluarga grafik berikut:

G0vXY(n1)/2XvYv

iXjYGijG0ij

G0GijG0Gijij(n1)2/4

Artem Kaznatcheev
sumber
Kompleksitas kueri WRT, lihat juga "Algoritma Quantum untuk masalah segitiga", Magniez, Santha, dan Szegedy, SODA'05 dan arXiv: quant-ph / 0310134.
David Eppstein
Contoh Anda hanya menunjukkan bahwa untuk kasus segitiga tunggal (saya rasa itu mudah digeneralisasi menjadi O (1) dengan mudah), itu tidak mencirikan trade-off antara jumlah segitiga dan probabilitas memukul satu, atau mengisyaratkan ke arah strategi pengambilan sampel yang baik.
Shir
Θ(n2)
Ω(n)Ω(N)
1
n11/nn
2

Saya tidak benar-benar memahami pertanyaan Anda sehubungan dengan tujuan akhir Anda. Namun, Anda dapat mempertimbangkan versi FPT untuk masalah pengemasan segitiga, jika itu membantu dalam masalah Anda. Secara khusus, Anda dapat mempertimbangkan Edge Segitiga Terpisah Packing (EDTP) atau Vertex Disjoint Triangle Packing (VDTP) dan kernel contoh untuk grafik masing-masing O (k) atau O (k ^ 2) masing-masing dalam hal jumlah simpul. Anda juga dapat melakukan kernel pada jumlah segitiga [O (k ^ 3)]. Setelah kernelisasi, akan lebih mudah untuk menganalisis segitiga dalam contoh grafik.

Nikhil
sumber