Mengurangi kompleksitas dengan paralelisme

10

Apakah mungkin (slash dapat Anda berikan contoh) untuk mengurangi kompleksitas komputasi dari suatu masalah dengan menggunakan algoritma paralel yang tidak memerlukan sejumlah prosesor relatif terhadap ukuran input?

Nick Larsen
sumber
Bisakah Anda sedikit memperjelas pertanyaan Anda? Jumlah prosesor yang konstan -> yang terbaik, Anda dapat meningkatkan waktu berjalan dengan faktor konstan. Saya kira ini bukan yang Anda maksud?
Jukka Suomela
+ Msgstr "Tidak relatif terhadap ukuran input". Apa yang Anda maksud dengan itu? O (1)?
Aryabhata
Maksud saya O (1) prosesor. @ Jukka: itu yang saya maksud, bisakah kompleksitas komputasi hanya dikurangi dengan menambahkan sejumlah prosesor relatif terhadap ukuran input?
Nick Larsen

Jawaban:

12

Jika yang Anda maksud adalah prosesor O (1), maka tidak ada, kompleksitas komputasi tidak dapat dikurangi.

Cukup sejajarkan pekerjaan yang dilakukan oleh masing-masing prosesor dan lakukan pada satu saja. Jika Anda khawatir tentang sinkronisasi, maka satu prosesor dapat dengan mudah meniru itu.

Aryabhata
sumber
Terima kasih atas jawaban cepatnya. Tanpa membuat pertanyaan lain untuk sesuatu yang sangat erat hubungannya, mungkinkah untuk mengurangi kompleksitas komputasi menggunakan sejumlah prosesor relatif terhadap sesuatu selain ukuran input?
Nick Larsen
2
@Nick: Sesuatu selain ukuran input adalah O (1) :-)
Aryabhata
Terima kasih, saya kesulitan memikirkan hal lain, tetapi saya ingin memastikan.
Nick Larsen
WRT apakah Anda dapat mencapai speedup dengan sejumlah prosesor yang tumbuh dengan jumlah selain ukuran input, saya tidak yakin jawabannya adalah 'tidak'. Ada masalah yang kompleksitasnya tumbuh dengan beberapa parameter yang berbeda (walaupun jelas tidak terlepas dari) ukuran input. Bagaimana jika untuk beberapa masalah grafik, saya mengizinkan Anda sejumlah prosesor yang terkait dengan lebar pohon grafik, misalnya?
Aaron Roth
@ Harun: Jika jumlah prosesor yang diizinkan terkait dengan input, maka ya, kita tidak bisa mengatakan "tidak" dengan pasti. Tentu saja, kecuali kita spesifik, itu adalah pertanyaan yang tidak berarti.
Aryabhata
6

Ada bidang muncul dari algoritma paralel tdk halus, di mana waktu berjalan (dan konsumsi sumber daya komputasi lainnya) dianggap sebagai fungsi dari parameter independen n (ukuran input) dan p (jumlah prosesor), sering di bawah asumsi yang alami n >> p .

Titik awal yang baik adalah ke google untuk "paralelisme massal-sinkron".

Alexander Tiskin
sumber
Bisakah kelas kompleksitas berubah jika Anda mengizinkan perangkat keras untuk skala dengan input data? Saya mengalami masalah dengan google sebagai orang awam: /
Gerenuk
1

halhal adalah konstanta) prosesor.

HAI(f(n)/hal)HAI((1/hal)f(n))HAI(cf(n))HAI(f(n))c=1/hal .

TT/hal+SHaimeM.HaireTsayame

Tapi NO kompleksitas berubah.

Pratik Deoghare
sumber
1

"Anda tidak dapat menghitungnya dengan 1 prosesor, tetapi dapat menghitung dengan 2."

Ini tidak mungkin, dengan asumsi bahwa kedua prosesor adalah TM atau model yang kurang kuat. Dari wikipedia, untuk mesin multi-tape:

Model ini secara intuitif tampak jauh lebih kuat daripada model pita tunggal, tetapi mesin multi-pita apa pun, tidak peduli seberapa besar k, dapat disimulasikan oleh mesin pita tunggal dengan hanya menggunakan waktu komputasi yang lebih kuadratik (Papadimitriou 1994, Thrm 2.1)

Juga untuk mesin multi-head, dari "Simulasi waktu linear mesin turing multihead dengan head - To-head jumps" oleh Walter J. Savitch dan Paul MB Vitányi:

Hasil utama dari makalah ini menunjukkan bahwa, mengingat mesin Turing dengan beberapa kepala baca-tulis per kaset dan yang memiliki operasi satu gerakan shift "menggeser kepala yang diberikan ke posisi beberapa kepala lain yang diberikan", seseorang dapat secara efektif membangun sebuah mesin Turing multitape dengan head baca-tulis tunggal yang mensimulasikannya dalam waktu linier; yaitu jika mesin asli beroperasi dalam waktu T (n), maka mesin simulasi akan beroperasi dalam waktu cT (n), untuk beberapa konstanta c.

chazisop
sumber
Di sini kita memiliki contoh yang bagus untuk biaya abstraksi. Komputer nyata (sebagai implementasi RM) dapat diparalelkan dengan lebih baik daripada TM.
Raphael
RM artinya apa? Jika itu salah ketik dan maksud Anda TM, saya tidak setuju. Multitape / multihead TM tidak perlu khawatir tentang komunikasi prosesor dan hukum Amdahl. Selain itu, saya tidak melihat bagaimana komputer dapat bekerja lebih baik daripada akses acak TM dan sebaliknya, yaitu saya percaya mereka setara.
chazisop
0

Mungkin "paralel atau" (diberikan dua fungsi mengembalikan boolean, katakan apakah salah satu dari mereka mengembalikan true, mengingat bahwa salah satu dari mereka, tetapi tidak keduanya, mungkin gagal untuk mengakhiri) mungkin apa yang Anda bicarakan: Anda tidak dapat menghitung dengan 1 prosesor, tetapi dapat menghitung dengan 2.

Namun, ini sangat tergantung pada model komputasi yang akan Anda gunakan, apakah Anda diberikan proses sebagai kotak hitam atau sebagai deskripsi mereka yang dapat Anda interpretasikan sendiri, dll.

Jkff
sumber
2
Ini kelihatannya salah, kecuali Anda bekerja dalam model yang sangat terbatas. Sebuah prosesor tunggal bisa saja menyisipkan instruksi yang seharusnya berjalan pada 2, yang menyebabkan paling banyak 2x + O (1) melambat. Saya kira dengan `` kotak hitam '' maksud Anda interleaving itu tidak mungkin? Meskipun begitu, jika Anda dapat menghentikan perhitungan kotak hitam yang terlalu lama, Anda masih dapat mensimulasikan dua prosesor dengan berulang kali menebak-dan-menggandakan panjang perhitungan yang diperlukan untuk setiap proses.
Aaron Roth
Tetapi itu, pada gilirannya, mengharuskan kita untuk dapat menghentikan perhitungan. Maksud saya, Anda tidak dapat melakukan paralel atau pada 1 prosesor dalam model di mana satu-satunya hal yang dapat Anda lakukan adalah menjalankan perhitungan sampai selesai.
jkff
Sekarang saya mengerti apa yang Anda maksudkan, tetapi saya percaya itu tidak lengkap. Anda tidak dapat menghitungnya dengan 2 juga. Jika satu mesin terus berjalan dan yang lainnya menjawab YA, jawabannya adalah YA. Tetapi bagaimana jika ia mengembalikan TIDAK? Anda tidak dapat menjawab dengan gaya deterministik, karena Anda tidak tahu apakah mesin itu masih berjalan atau macet (yaitu masalah HALTING).
chazisop