Paralellik ile karmaşıklığı azaltmak


10

Giriş boyutuna göre bir dizi işlemci gerektirmeyen bir paralel algoritma kullanarak bir sorunun hesaplama karmaşıklığını azaltmak mümkün mü (bir örnek sağlayabilir misiniz?)?


Sorunuzu biraz açıklığa kavuşturabilir misiniz? Son derece sabit işlemci sayısı -> en iyi ihtimalle çalışma süresini sabit bir faktörle artırabilirsiniz. Sanırım demek istediğin bu değildi?
Jukka Suomela

Msgstr "Giriş boyutuna göre değil". Bununla tam olarak ne demek istiyorsun? O (1)?
Aryabhata

Yani O (1) işlemciler. @Jukka: Demek istediğim, hesaplama karmaşıklığı yalnızca giriş boyutuna göre bir dizi işlemci eklenerek azaltılabilir mi?
Nick Larsen

Yanıtlar:


12

O (1) işlemciyi kastediyorsanız, hayır, hesaplama karmaşıklığı azaltılamaz.

Her işlemci tarafından yapılan işi hizalayın ve tek bir işlemde yapın. Senkronizasyon konusunda endişeleriniz varsa, bir işlemci bunu kolayca taklit edebilir.


Hizli yanit icin tesekkurler. Bu kadar yakından ilişkili bir şey için başka bir soru yaratmadan, girdi boyutu dışında bir şeye göre bir dizi işlemci kullanarak hesaplama karmaşıklığını azaltmak mümkün müdür?
Nick Larsen

2
@Nick: Giriş boyutundan başka bir şey O (1) :-)
Aryabhata

Teşekkürler, başka bir şey düşünmekte zorlanıyordum, ama emin olmak istedim.
Nick Larsen

WRT giriş boyutu dışında bir miktar ile büyüyen bir dizi işlemci ile bir hızlanma elde edip edemeyeceğinizi, cevap 'hayır' olduğundan emin değilim. Karmaşıklığı girdi boyutundan farklı (açık bir şekilde bağımsız olmasa da) bazı parametrelerle büyüyen problemler vardır. Bir grafik problemi için, örneğin grafiğin ağaç genişliği ile ilgili bir dizi işlemciye izin verirsem ne olur?
Aaron Roth

@Aaron: İzin verilen işlemci sayısı bir şekilde girdiyle ilgiliyse, evet, kesinlikle "hayır" diyemeyiz. Tabii ki, biz spesifik olmadıkça, bu anlamsız bir sorudur.
Aryabhata

6

Kaba taneli paralel algoritmaların ortaya çıkan bir alanı vardır, burada çalışma süresi (ve diğer hesaplama kaynağı tüketimi ), genellikle doğal bir varsayım n altında bağımsız parametreler n (giriş boyutu) ve p (işlemci sayısı ) işlevi olarak kabul edilir. >> s .

İyi bir başlangıç ​​noktası "toplu eşzamanlı paralellik" için google.


Donanımın giriş verileriyle ölçeklendirilmesine izin verirseniz karmaşıklık sınıfı değişebilir mi? Bunu bir meslekten olmayan olarak google'da sorun yaşıyorum: /
Gerenuk


1

Görevi (p sabittir) işlemcilere dağıtırsanız.p

O zaman karmaşıklık burada c = 1 /Ö(f(n)/p)Ö((1/p)f(n))Ö(cf(n))Ö(f(n)) .c=1/p

TT/p+SÖmeMÖreTbenme

Ancak karmaşıklık YOK.


1

"1 işlemci ile hesaplayamazsınız, ancak 2 ile hesaplayabilirsiniz."

Her iki işlemcinin de TM veya daha az güçlü bir model olduğu varsayılarak bu mümkün değildir. Vikipedi'den çok bantlı makineler için:

Bu model sezgisel olarak tek bantlı modelden çok daha güçlü görünüyor, ancak k ne kadar büyük olursa olsun, herhangi bir çok bantlı makine, sadece kuadratik olarak daha fazla hesaplama süresi kullanarak tek bantlı bir makine tarafından simüle edilebilir (Papadimitriou 1994, Thrm 2.1)

Ayrıca çok kafalı makineler için, Walter J. Savitch ve Paul MB Vitányi'nin "Kafa ile çok kafalı makinelerin doğrusal kafa simülasyonu - Başa atlamalar" bölümünden:

Bu makalenin ana sonucu, bant başına birkaç okuma-yazma kafasına sahip olan ve ek bir hareket kaydırma operasyonu "verilen bir kafayı başka bir verilen başın konumuna kaydır" olan bir Turing makinesine göre, etkili bir şekilde çok bantlı Bant başına tek bir okuma-yazma kafasına sahip olan ve doğrusal zamanda simüle eden Turing makinesi; yani orijinal makine T (n) zamanında çalışıyorsa, o zaman simülasyon makinesi bir süre için cT (n) zamanında çalışacaktır, c.


Burada soyutlamanın maliyeti için harika bir örneğimiz var. Gerçek bilgisayarlar (RM uygulamaları olarak) TM'lerden daha iyi paralelleştirilebilir.
Raphael

RM ne anlama geliyor? Eğer bu bir yanlış yazıysa ve TM demek istiyorsan, katılmıyorum. Çok bantlı / çok kafalı TM'lerin işlemci iletişimi ve Amdahl yasası hakkında endişelenmesine gerek yoktur. Ayrıca, bir bilgisayarın rasgele erişimli TM'den daha iyi performans gösterebileceğini ve tam tersini göremiyorum, yani eşdeğer olduklarına inanıyorum.
chazisop

0

Belki "paralel veya" (bir boole döndüren iki işlev verildiğinde, bunlardan birinin doğru dönüp dönmediğini söyleyin, her ikisinin değil, her ikisinin de sonlanamayabileceği göz önüne alındığında) bahsettiğiniz şey olabilir: 1 işlemci ile, ancak 2 ile hesaplayabilir.

Bununla birlikte, bu büyük ölçüde hangi hesaplama modelini kullanacağınıza, süreçlere kara kutular veya kendinizi yorumlayabileceğiniz açıklamaları vb.


2
Çok sınırlı bir modelde çalışmadığınız sürece bu yanlış görünüyor. Tek bir işlemci, aksi takdirde 2'de çalışacak talimatları araya ekleyerek en fazla 2x + O (1) yavaşlamaya neden olabilir. Sanırım `` kara kutu '' ile serpiştirmenin imkansız olduğunu mu söylüyorsun? O zaman bile, çok uzun süren kara kutu hesaplamalarını sonlandırabilirseniz, her işlem için gerekli hesaplama uzunluğunu art arda tahmin edip iki katına çıkararak iki işlemciyi simüle edebilirsiniz.
Aaron Roth

Ancak bu da hesaplamaları sonlandırabilmemizi gerektirir. Yani, yapabileceğiniz tek şeyin bitene kadar bir hesaplama yapmak olduğu bir modelde paralel veya 1 işlemcide yapamazsınız.
jkff

Şimdi ne demek istediğini anlıyorum, ama bunun tam olmadığına inanıyorum. Hiçbirini 2 ile hesaplayamazsınız. Bir makine çalışmaya devam ederse diğeri EVET ise, cevap EVET'tir. Peki ya NO döndürürse? Kararlı bir şekilde cevap veremezsiniz, çünkü hala çalışmakta olan makinenin mi yoksa sıkışmış mı olduğunu bilmiyorsunuz (yani HALTING problemi).
chazisop
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.