Randomize ve karakteristik olmayan algoritmalar arasındaki farklar ve ilişkiler?


30

Randomize algoritmalar ve klasik olmayan algoritmalar arasındaki farklar ve ilişkiler nelerdir?

Vikipedi'den

Bir randomize algoritma onun mantığı bir parçası olarak rastgelelik derecesi kullanan bir algoritmadır. Algoritma, tipik olarak, rastgele bitlerin tüm olası seçimlerinde "ortalama durumda" iyi performans elde etmek umuduyla, davranışını yönlendirmek için yardımcı girdi olarak düzgün rastgele bitler kullanır. Resmen, algoritmanın performansı, rastgele bitler tarafından belirlenen rastgele bir değişken olacaktır; Bu nedenle, çalışma süresi veya çıktı (veya her ikisi de) rasgele değişkenlerdir.

Bir nondeterministic algoritma bir deterministik algoritma aksine, farklı pistlerinde farklı davranışlar sergileyebilir bir algoritmadır. Bir algoritmanın, çalıştırmadan çalıştırmaya farklı davranabilmesi için birkaç yol vardır. Bir eşzamanlı algoritma nedeniyle yarış durumu farklı farklı pistlerinde gerçekleştirebilir. Bir olasılık algoritma davranışlarını s rastgele sayı üreteci bağlıdır. Belirleyici olmayan polinom zamanındaki bir problemi çözen bir algoritma, yürütme sırasında yaptığı seçimlere bağlı olarak polinom veya üssel sürede çalışabilir.

Randomize algoritmalar ve olasılık algoritmaları aynı kavram mıdır?

Eğer öyleyse, randomize algoritmalar sadece bir tür kararsız algoritma mıdır?


Sanırım kargaşanın bir parçası ortaya çıkıyor çünkü "deterministik" ve "deterministik değil" sesleri aynı şeyi ifade etmeli, fakat "determinist" "rasgele değil" ve "determinist değil" anlamına geliyor. Dolayısıyla "rastgele" ve "deterministik olmayan", bir algoritmanın "deterministik değil" olabileceği, ancak "deterministik olmayan" özel bir teknik tanımlamaya sahip olduğu ve sadece "deterministik" için bir zıtlık olmadığı anlamına gelir.
Joe,

Yanıtlar:


24

Deterministik olmayan algoritmalar olasılıksal algoritmalardan çok farklıdır.

Olasılık algoritmaları bozuk para fırlatması kullanan ve "çoğu zaman" çalışan algoritmalardır. Örnek olarak, quicksort'un randomize varyantları zaman içinde beklentisinde (ve yüksek olasılıkla) çalışır, ancak şanssızsanız Θ ( n 2 ) kadar sürebilir . Olasılık algoritmaları pratiktir ve örneğin bilgisayarınız tarafından RSA anahtarları oluştururken kullanılır (gizli anahtarınızın iki faktörünün asal olduğunu test etmek için). Bozuk para fırlatması kullanmayan olasılıksal algoritmaya bazen "deterministik" denir.Θ(ngünlükn)Θ(n2)

Deterministik olmayan algoritmalar “ipucuna ihtiyaç duyan” fakat her zaman doğru olan algoritmalardır: yanlış ipucu verilerek kandırılamazlar. Bir örnek olarak, burada olmayan bir deterministik algoritma olduğunu faktörler bir tamsayı : faktorize tahmin n ve tüm faktörler (gerçekten buna karşılık bir "fast-in-teori" deterministik algoritma vardır) asal olduğundan emin olun. Bu algoritma çok hızlı ve yanlış ipuçlarını reddediyor. Çoğu insan randomize algoritmaların bu kadar hızlı bir şekilde tamsayıları etkileyemediğini düşünür. Açıkçası bu hesaplama modeli gerçekçi değil.nn

Deterministik olmayan algoritmaları neden önemsiyoruz? Belirleyici olmayan algoritmalara sahip etkili karar kararlarından oluşan ve NP olarak bilinen bir problem sınıfı vardır . Çoğu insan bu sınıftaki en zor problemlerin, yani NP-komple problemlerin, etkili deterministik (hatta rastgele) algoritmalarının olmadığını düşünür; Bu P vs NP sorusu olarak bilinir. Birçok doğal sorun NP tamamlanmış olduğundan, en kötü durumda (pratikte çoğu zaman pratikte ortaya çıkan durumların aslında makul bir zamanda çözülebilir olduğunu) aslında etkili bir şekilde çözülemeyip çözülemeyeceklerini bilmek ilginçtir.


Teşekkürler! (1) NP problemlerinin, polinom olmayan bir zamana bağlı olmayan bir Turing makinesindeki bir algoritma ile çözülebilen problemler olduğunu hatırlıyorum. Öyleyse bir anlamda "belirlenimsel olmayan bir Turing makinesinde bir algoritma" ve "deterministik bir Turing makinesinde belirsiz bir algoritma" var mı? (2) Proabalistik algoritma ve randomize algoritmanın aynı kavram olduğunu düşünüyor musunuz? (3) Wikipedia'nın eşzamanlı algoritmanın ve olasılıksal algoritmanın iki tür kararsız algoritmanın yanlış olduğunu söylediğini de düşünüyor musunuz?
Tim

1
Nondeterminizmin sertifika lezzetinin, randomizasyon ile farkı netleştirmeye yaradığını sanmıyorum.
Raphael

(1) Evet, ikisi aynı. (2) Bunlar aynı konsept için iki isimdir. (3) Vikipedi, diğer tür algoritmalara örnekler veriyor, ancak sunum yanıltıcı olabilir. Paralel ve olasılıksal algoritmalar deterministik değildir.
Yuval Filmus

4
@ShelbyMooreIII Determinizmin özyineleme teorisi ve teorik bilgisayar bilimlerinde çok özel bir teknik anlamı vardır.
Yuval Filmus

1
Yuval, lütfen yapıcı ya da eski olmadığını düşündüğünüz yorumları işaretleyin; Onları kaldıracağız.
Raphael

15

Bir algoritma, verilen bir girişten, girişte belirli bir ilişkisi olan istenen bir çıktıya alınma yöntemini belirtir. Bu algoritmanın, herhangi bir noktada, algoritmadaki bir sonraki adımın, potansiyel olarak şu ana kadar hesaplanan girdiye veya kısmi verilere bağlı olarak, bu yöntemin bir parçası olarak yapılması gerektiği, tam ve kesin olarak belirtilmediği takdirde belirleyici olduğunu söylüyoruz. her zaman benzersiz tanımlanır.

Nondeterminism, algoritmanın bir kısmının altında veya hatta tanımlanmamış olarak kaldığı anlamına gelir. Örneğin, "int i = 0 ve n arasında bir çift sayı" belirtilmiştir. Bu, bu noktada belirtilen benzersiz bir davranış olmadığı anlamına gelir.

Bu ayrımın yararlı olması için, (deterministik) algoritmalar için (her zamanki gibi) “doğruluk” kavramına ihtiyacınız vardır; bu, gayrı resmi olarak “algoritma her zaman hesaplamak istediğim şeyi hesaplar” dır. Belirsiz talimatlarda mümkün olan seçimleri hesaba katması gereken, belirli olmayan algoritmalar için doğruluğun ne anlama geldiğini düşünmek ilginçleşir.

Nondeterminizm için doğruluğu tanımlamanın iki yolu vardır. Birincisi oldukça basit ve daha az ilginç, bunun için doğruluk "algoritma, yapmama izin verilen tüm seçim dizileri için her zaman hesaplamak istediğimi hesaplar" anlamına geliyor. Bu bazen, bir miktar sözde kodun yazarı bir sayı seçmek için çok tembelse ve "seçim 0" algoritmasını deterministik hale getirdiğinde "0 ile n arasındaki herhangi bir sayıyı seç" diyorsa oluşur. Temel olarak, tüm kararsızlığın yerini bir seçim sonucu değiştirerek algoritmayı deterministik hale getirebilirsiniz.

Bu aynı zamanda ikinci fıkranızda bahsi geçen “nondeterminizm” dir. Bu aynı zamanda paralel algoritmalarda belirsizlikçiliktir: bu algoritmalarda tam olarak neye benzeyeceğinden tam olarak emin değilsiniz, ancak tam olarak ne olursa olsun (aksi halde paralel algoritmanız yanlış olur) her zaman çalışacağını biliyorsunuz.

Nondeterministik algoritma için doğruluğun ilginç tanımı, "algoritma, yapmama izin verilen bazı tercihler dizisi için her zaman hesaplamak istediğimi hesaplar" dır . Bu, algoritmayı yanlış cevaplar ürettikleri veya hatta sonsuz bir döngüye girdikleri için yanlış olan seçenekler olabileceği anlamına gelir. "0 ve n arasında herhangi bir sayıyı seçmek" örneğinde, belki de 4 ve 16 doğru seçimlerdir, ancak diğer tüm sayılar yanlıştır ve bu sayılar girişe, kısmi sonuçlara ve şu ana kadar yapılan seçimlere bağlı olarak değişebilir.

Bilgisayar bilimlerinde kullanıldığında, nondeterminizm genellikle nondeterministik olarak bir 0 veya 1 seçerek sınırlandırılır. (eğer varsa) uygulanabilirliğini sınırlar - eğer uygulanabilirlik kısıtlı ise, ilke bakıldığında, mağduriyetçilik çok güçlüydü.

Nondeterminism, sertifika tabanlı bir deterministik algoritma kadar güçlü bir araçtır, yani bir örnek verilen bir özelliği ve bu özellik için bir sertifikayı kontrol eden bir algoritmadır. Sertifikayı yalnızca bir yönden sanal olmayan bir şekilde tahmin edebilir ve diğer yöndeki programınızın 0 ve 1'in geri dönüşsüz tahminleri için 'doğru' cevapları içeren bir sertifika verebilirsiniz.

Eğer çalışma zamanını karışıma atarsak, işler daha da ilginçleşir. Nondeterministik bir algoritmanın çalışma süresi genellikle tüm (doğru) seçimlerde minimum olarak alınır. Bununla birlikte, diğer seçenekler önemli ölçüde daha kötü bir çalışma süresine (asimptotik olarak daha kötü, hatta asgari olarak keyfi olarak kötü bile olabilir) ve hatta sonsuz bir döngüye neden olabilir. Bu yüzden minimumları alıyoruz: bu garip durumları umursamıyoruz.

Şimdi rastgele algoritmalara geçiyoruz. Randomize algoritmalar, klasik olmayan algoritmalar gibidir, ancak belirli noktalarda 0 ile 1 arasında seçim yapmak için 'izin vermek' yerine, bu seçim, seçimin yapılacağı zamanda rastgele bir bozuk para atma ile belirlenir (bu, çalışmadan farklı olabilir) veya algoritmanın yürütülmesi sırasında aynı seçimin daha sonra tekrar yapılması gerektiğinde). Bu, sonucun eşit olasılıkla 0 veya 1 olduğu anlamına gelir. Doğruluk şimdi “algoritma hemen hemen her zaman hesaplamasını istediğimi hesaplar” ya da “algoritma her zaman hesaplamasını istediğimi hesaplar” (sadece deterministik versiyon) olur. İkinci durumda, algoritmanın cevabını hesaplaması gereken süre genellikle “neredeyse her zaman hızlı” dır, belirleyici bir “her zaman hızlı” dır.

PZPPN-P


1
O(|s|)s

14

Kısacası: determinizm olmayan, bir hesaplamanın nasıl sürdürüleceğine ilişkin, eşit derecede eşit derecede geçerli seçeneklere sahip olmak demektir. Randomizasyon, hesaplamayı yönlendirmek için harici (rastgele) bit kaynağı kullanmak anlamına gelir.


Nondeterminizmi anlamak için sonlu otomata (FA) bakmanızı öneririm. Bir için deterministik FA (DFA), geçiş fonksiyonu, iyi bir fonksiyonudur. Mevcut durum ve bir sonraki giriş sembolü göz önüne alındığında, bir sonraki durum benzersiz olarak tanımlanır.

(birb)*(birc)*

NFA
[ kaynak ]

bir(birb)*(birc)*bir

Burada anahtar nokta kabul olarak tanımlanır olmasıdır "eğer kabul orada NFA için kabul çalıştırmak". Bu varoluş ölçütü, gerçek bir tahmin olmasa da “her zaman doğru tahmin” olarak yorumlanabilir.

Burada, hiçbir yerde olasılık olmadığını unutmayın. Nondeterminizmi programlama dillerine çevirmek isteseydiniz , aynı durumda verilen farklı diğer ifadelere sıçramaya neden olabilecek ifadeleriniz olurdu . Böyle bir şey, belki fikrinizi çarpıtmak için tasarlanmış ezoterik programlama dilleri dışında yoktur.


Randomizasyon oldukça farklı. Bozulursa, otomat / program yürütmeye devam etmek için birden fazla seçeneğe sahip değildir. Rasgele bit (ler) çizildiğinde, bir sonraki ifade benzersiz olarak tanımlanır:

if ( rand() > 5 )
  do_stuff();
else
  do_other_stuff();

Sonlu otomata açısından, şunu göz önünde bulundurun:

PFA
[ kaynak ]

{bir,b,c}*10

ΣxΠΠ


Son bir not: Nondeterminizmin tamamen teorik bir kavram olduğunu görebiliriz, uygulanamaz! Peki neden kullanıyoruz?

  1. Genellikle daha küçük temsillere izin verir. En küçük DFA'nın katlanarak büyük olduğu NFA olduğunu biliyor olabilirsiniz. Küçük olanları kullanmak sadece otomat tasarımını ve teknik provaları basitleştirmek meselesidir.

  2. Hedef modelde belirsizliğe izin veriliyorsa, modeller arasındaki çeviriler daha kolay anlaşılır. Örneğin, normal ifadeleri DFA'ya dönüştürmeyi düşünün: olağan (ve basit) yol, onu bir NFA'ya çevirmek ve bunu belirlemek. Doğrudan bir inşaatın farkında değilim.

  3. Bu akademik bir endişe olabilir, fakat belirsizlikçiliğin cihazın gücünü artırabilmesi ilginçtir. Bu, sonlu otomata ve Turing makineleri için geçerli değildir, en popüler makine modelleri cihazlarını tartışabilir, ancak örneğin deterministic pushdown-automata, Büchi automata ve yukarıdan aşağıya ağaç otomatları, deterministik olmayan kardeşlerinden çok daha az dil kabul edebilir.


  1. Bir örnek için cstheory.SE bu soruya bakın .
  2. Bkz burada , burada ve burada (Proposition 1.6.2) sırasıyla.

Öyleyse, programlamada, aynı koşulda birden fazla "eğer başka" yapamayız, bu yüzden olasılık / ağırlık bazen duruma dahil edilir mi?
kate

@kate Ne demek istediğini anlamadım. Programlama dilleri - halt, bilgisayarlar! - doğası gereği deterministic. PRNG'leri kullanarak rastgele yanılsama yanılsaması yaratabilir ve rastgele (bu ne anlama geliyorsa) girişleri trule edebiliriz.
Raphael

14

Buraya atılan iki farklı kavramın tanımlanmamasının olduğunu bilmelisiniz.

  1. Vikipedi'nin tanımladığı gibi, hemen hemen “determinizm değil”, yani aynı girdiler üzerinde her zaman aynı davranışa sahip olmayan herhangi bir algoritma. Randomize edilmiş algoritmalar, “belirleyici olmayan” algoritmaların özel bir durumudur, çünkü benim verdiğim tanıma uyuyorlar.

  2. Klasik olmayan hesaplama modelleri (klasik olmayan turing makineleri gibi) hesaplamaların teorik modelleridir. Birden fazla olası uygulama yolu olabilir ve bu yollardan herhangi biri kabul ederse "kabul eder". Gerçek olmadığını not etmelisin. Bu anlamda belirsiz olan bir algoritmayı fiziksel olarak çalıştırmanın bir yolu yoktur, ancak bunu randomize veya deterministik bir yöntemle simüle edebilirsiniz.

CS'de, nondeterminizm genellikle (2) anlamına gelir, bu yüzden Wikipedia’nın verdiğiniz tanımı ((1)) yanıltıcıdır. Şimdiye kadar verilen cevapların çoğu (1) 'i açıklamıyor (2).


1) 'e göre, randomize Quicksort deterministik bir algoritmadır; Bunun faydalı bir terminoloji olduğundan emin değilim. Sanırım 1) "kara kutu" görünümü olarak tanımlanabilirken, 2) aslında algoritmayı / makineyi kontrol ediyor. Muhtemelen, CS yaklaşık 2); Bakış açısı 1) 'i (modüler) yazılım mühendisliğine atadım.
Raphael

@Raphael, İyi nokta, (1) "aynı girdilerde aynı davranışa sahip" diyecek şekilde düzeltmeliyim. (2) 'yi (1) tercih etmeyi kabul etti.
usul

"Davranış" tam olarak kara kutu beyaz kutu tarzında belirsizdir. :)
Raphael

Tabii ki, sanırım, önemli bir ayrımı, rastlantısallık içerebilen (bir NTM içermez), formal, kesin olarak tanımlanmış, belirlenemeyen bir Turing Makinesi (2) ile belirsiz / belirsiz "determinizm değil" (1) arasında görüyorum. Tüm söylemek istediğim
buydu

Belirleyici olmayan bir algoritma çalıştırma konusunda 'gerçek olmayan' bir şey yoktur, bu sadece çalıştırırken, sonucun algoritma tarafından belirlenmeyen seçimler yapılması gerektiği anlamına gelir. 1 ile 2 arasındaki tek fark, 1’de algoritmanın “başarılı” olduğu düşünüldüğünde söylememiş olmanızdır, oysa 2’de algoritmanın sonunda daima “evet” veya “hayır” yazan türden olması gerekir. Bir deneme ve bir karar probleminiz varsa ve algoritmanın soruna cevabını "evet" olarak tanımlamış olursunuz ve eğer mümkün olan herhangi biri çalışırsa "evet" diye cevap verirse. So 2 sadece 1 özel bir durumdur
reinierpost

1

Yaptığım bazı araştırmalar nedeniyle bunu tekrar gözden geçirerek, kendim ve cevaplayan diğerlerinin arasındaki anlaşmazlık, hepimizin doğru olduğu bütüncül bir anlayışa asimile edilebilir. Ancak IMO, benimsenen bilgisayar bilimi terminolojisine “sınırsız dincilikçilik” yanlış bir oksimorondur (daha önce benim açımdan olanıydı).

Buradaki kilit nokta, sınırlanmış ve sınırlanmamış nondeterminizm arasındaki farkı ayırt etmektir. [1]

Rasgele olmayan Turing makinesi (diğer adıyla “NTMs”) sahip sınırlı her durum geçiş bir olmasıyla gerekirci olmayan makinalar sınırlı yani program sayısı (diğer adıyla “konfigürasyonları”) olasılıklar sayısı, sonlu. Bant sınırsız kalır, bu nedenle sonlandırma kanıtı kararsız kalır. Ancak durduran herhangi bir girdi için çıktı zaman içinde deterministiktir ve sınırlanır―; yani herhangi bir girdi için sonuç deterministiktir veya sonlanmaz. Ayrıca NTM'ler olası tüm konfigürasyonları paralel olarak yürütürler, bu nedenle deterministik Turing makinelerinde (aka “DTM'ler”) NTM'lerin taklit edilmesinden katlanarak daha hızlı çalışırlar. [2]

NTM'lerde girdiler ve çıktılar arasında özgün olmayan bir ilişki yoktur, çünkü sonuç her zaman bir girdi veya başlangıç ​​durumu için aynıdır; bu, herhangi bir ilave rasgelelik olmadan DTM'ler tarafından taklit edilebildiklerinden belirgindir. [2] Kararsızlık, deterministin antitezi değildir, çünkü durmamak da deterministik bir sonuçtur. Deterministik makineler, belirli bir girdi için her zaman aynı sonuca sahiptir, bu sonuç durdurulmasa bile. NTM'lerin lokalize olmayan tanımlanışı, yürütme algoritmasının her bir geçişinde bulunmaktadır. Ağacın hangi yolunun çıktı durumunu sağlayarak sonlandıracağı kesin değildir. Ancak karar verilemezlik, belirlenimcilik değildir. Bu nedenle “sınırlandırılmış tanımsızcılık” terimi, devlet makinesi içindeki yerelleşmiş belirsizliği tanımlamak içindir, fakat girdilerin sonuçlarla ilişkisini değil, dolayısıyla “sınırlı” kavramı. Hala “sınırlandırılmış belirsizcilik” teriminin bir oksimoron olduğunu düşünüyorum ve “paralelleştirilmiş bir durum geçişi” Turing makinesi olarak daha doğru bir şekilde tanımlanabilirdi.

Oysa verilen herhangi bir giriş veya başlangıç ​​durumu için sınırlandırılmamış nondeterminizm (aka “belirsizlik”) sınırsız sayıda olası duruma sahiptir. Sınırlandırılmamış nondeterminizm yalnızca programların muhtemel konfigürasyonlarının sayısını değil, aynı zamanda sınırsız gecikmeler gibi giriş veya başlangıç ​​durumunun bir parçası olmayan bazı sınırsız dış durumları da içerir. Dolayısıyla, sonuçlar aynı girdi veya başlangıç ​​koşulu için tekrarlanan uygulamalara göre değişebilir; bu nedenle girdiler ve çıktılar arasında belirleyici bir ilişki yoktur. [3]

Rastgele ve olasılıklı algoritmalar bazı tanımsızcılık kullanır, yani muhtemel konfigürasyonların sayısındaki muhtemel konfigürasyonların rastgele seçimi, ancak NTM'lerin yaptığı gibi tüm olası konfigürasyonları yapmazlar. Bu nedenle, rastgelelik deterministik olmadığı sürece (örneğin PRNG) ve rastlantısallık için entropinin başlangıç ​​durumunun girdinin bir parçası olduğu kabul edilmedikçe determinist değildir.

[1] https://en.wikipedia.org/w/index.php?title=Unbounded_nondeterminism&oldid=710628370#Nondeterministic_automata

[2] https://en.wikipedia.org/w/index.php?title=Non-deterministic_Turing_machine&oldid=754212081#Equivalence_with_DTMs

[3] Hewitt, Meijer ve Szyperski: Aktör Modeli (bilmek istediğiniz her şey ...) . 17:44 dakikalık işarete atlayın.


1
Bunun soruyu nasıl cevapladığını anlamıyorum.
adrianN

1
@adrianN cevabı, nondeterminizmin gerçekte ne olduğunu açıklıyor. Ve sonra randomize algoritmaların ilişkisini açıklar. Soru, ikisini ilişkilendirmek ister. Bingo. Soru cevaplandı.
Shelby Moore III

0

Farkı açıklayan tüm cevapların yanı sıra, söylemek istediklerini elde etmenize yardımcı olabilecek bir örneğim var.
Bir bozuk para atmayı düşünün, ya bir H veya bir T elde edersiniz . Yazı tura rastgele ise, büyük olasılıkla 1000 sikke fırlatır dışında, 500 olacağıdır H ve bunlardan 999 üzerinden olacağını oldukça düşüktür H . Ancak madeni para atışı determinist değilse, 999 H almanın çok düşük olacağını söyleyemeyiz .


Sizin gönderinizin bir yorum olarak hizmet ettiğini düşünüyorum, bunun yanında rastlantısal olmayan algoritmalar ve rastlantısallaştırılmış ana soruyu çözmeyi denemez ve ayrıca bizi farklı türden oymacılığa geri sürükler.
Evil

-6

Randomize (polinom zamanı, boolean sonuç) algoritmaları, deterministik olmayan (polinomial zaman, boolean sonuç) algoritmalarının yer aldığı bir NP alt grubu ve deterministik (polinomial zaman, boolean sonuç) olan P'nin bir üstkümesi olan RP'nin bir alt kümesi olan RP hesaplamalı karmaşıklık sınıfındadır. algoritmalar bulunur.

Alt küme karmaşıklığı , bir kümedeki sorunları diğer kümelere indirgemekle ilgilidir . Bu nedenle RP ⊆ NP, aynı zamanda determinist olmayan randomize algoritmaların olasılığını da dışlar çünkü tanımlayıcı olarak bir süperset, alt kümeyi içerir. Alt küme, her RP algoritmasının (veya herhangi bir RP-komple algoritmanın) bazı NP algoritmasına (veya herhangi bir NP-komple algoritmaya) indirgenebileceği anlamına gelir. P, RP'nin bir alt kümesidir, çünkü P'deki her problem, kontrolsüz entropi miktarının 0 olduğu RP'deki bir probleme indirgenebilir.

Teğetsel olarak, bu, NC'deki (paralel hesaplama) her sorunun P'deki bir soruna indirgenebilmesine paraleldir, paralel hesaplamayı P'deki bir seri soruna indirgemeyle simüle ederek, ancak konunun doğru olduğu henüz kanıtlanmamıştır. P'deki her problemin NC'deki bir soruna indirgenebilir ya da doğru olmadığı kanıtlanmıştır, yani P-tamamlanmış bir sorunun NC'deki bir soruna indirgenemez olduğunun anlaşılmaz kanıtı. Doğası gereği seri olan ve paralel olarak hesaplanamayan sorunların olması mümkün olabilir, ancak P ≠ NC'nin kanıtlanamaz gibi göründüğünü kanıtlamak (bu cevabı tartışmak için çok telaşlı nedenlerden ötürü) kanıtlamak mümkün olabilir.

Daha genel olarak (yani, boolean sonuç türleriyle sınırlı değildir), randomize algoritmalar , entropinin bir kısmının harici kaynaklı olması nedeniyle deterministik algoritmalardan ayrılır . Rastgeleleştirilmiş algoritmalar deterministik olmayan algoritmalardan ayrılır, çünkü entropi sınırlıdır ve böylece randomize (ve deterministik olmayan) algoritmaların her zaman sonlandırıldığı kanıtlanabilir.

Nondeterministic algoritmalar öngörülemezliği kaynaklanmaktadır yetersizlik numaralandırmak giriş entropi tüm olası permütasyon (fesih değişkenliğine neden olur). Randomize bir algoritmanın tahmin edilemezliği kontrol edilememesinden kaynaklanmaktadır.Tüm girdi entropisi (öngörülemeyen bir sonucun tahmin edilemezliği ile sonuçlanmasına rağmen, öngörülemeyenlerin oranı tahmin edilebilir). Bunların hiçbiri soruna doğru cevabın tahmin edilemezliği ile ilgili ifadeler değil, tahmin edilemezlik sırasıyla sonlandırma ve belirsiz sonuçların yan kanalında ortaya çıkar. Birçok okuyucunun bir alandaki öngörülemezliği, doğru sonucun tahmin edilemezliği ile birleştiği anlaşılıyor, bu da asla yazmadığım bir konfederasyondur (düzenleme geçmişini gözden geçirin).

Determinizmin her zaman (herhangi bir bilimde veya terimin kullanımında) evrensel (yani sınırlandırılmamış) entropinin numaralandırılamaması olduğunu anlamak önemlidir. Oysa, randomizasyon, sınırlandırılmayabilen veya bağlanamayan başka bir entropi kaynağına (giriş değişkenlerinin kontrolü altında olan ve dolayısıyla entropi olmayan programlarda) erişmeyi ifade eder.

Benzer bir soru soran diğer konuya şu anda en popüler olan cevaba aşağıdaki yorumu ekledim .

Bütün bilimler, sınırsız entropi kavramı üzerinde birleşmiş olan nondeterminizm tanımını kullanır. Tüm bilimlerde öngörülemeyen sonuçlar, bir algoritmanın (veya sistemin) tüm olası çıktılarını önceden tanımlayamamasından kaynaklanmaktadır, çünkü sınırsız durumları, yani NP karmaşıklık sınıfını kabul etmektedir. Durup durmadığını tespit etmek ve sonucun önemsiz olduğunu belirtmek için belirli bir girdiyi belirtmek, diğer bilimlerde aynı durum değişikliğini tekrar ederken, evrenin entropisinin geri kalanını sabit tutmakla eşdeğerdir. Bilgisayar bilimi bu entropi izolasyonuna izin verirken, doğa bilimleri bunu yapmaz.

Randomize ve klasik olmayan arasındaki tek belirgin ayrım hakkındaki noktama açıklık getirmek için en iyi yorumlardan bazılarını eklemek.

Ayrımı görmek gerçekten oldukça zarif ve kolaydır, bir kez hepiniz göze çarpan entropi bakış açısıyla değil, operasyonel bir bakış açısıyla açıklamaya çalışarak karışmayı bıraktınız.

@ reinierpost herkes, randomize ve klasik olmayan arasındaki farkı kapatıyor . Bu, yorumunuzun karışmasına neden olur. Algoritma, girdi (değişken) entropinin ve kaynak kodunun (değişmeyen) iç entropinin etkileşimine tepki verir. Nondeterminizm sınırsız entropidir. Değişken entropi, π basamağını genişletmek gibi dahili olarak sınırsız da olabilir . Randomize, entropinin bir kısmı tanımlandığı gibi girişe bağlı değildir (yani bir sistem çağrısından gelebilir /dev/randomveya örneğin NFA veya bir PRNG gibi simgelenen rastgelelik olabilir).

.

Deterministik olmayan sonlu otomanın (NFA) köklü resmi tanımı sonlu girdi entropisidir (veri: 5-tuple). Böylece her NFA deterministik bir Turing makinesinde çalışabilir, yani belirsiz bir Turing-komple makineye ihtiyaç duymaz. Dolayısıyla NFA'lar tanımlayıcı olmayan problemler sınıfında değildir. NFA’daki “nondeterminizm” kavramı, determinizminin (her NFA bir DFA’ya dönüştürülebildiğinden açıkça görünse de) açıkça genişletilmemesi - hesaplamanın dinamizmi ile aynı değildir.

.

@Raphael , NFA’larda iddia edilen “determinizm” denilen şeyin gerçekten rastlantısallık olduğunu, rastlantısallık ve dinametizmizm arasındaki ayrımın tanımını anlamıştır. Benim tanımım, rastgelelik, program veya işleve girişin kontrolü altında olmayan, bilginin (veya bir NFA durumunda istenen açık olmayan genleşmenin) altında olmadığı entropinin bir kısmı. Oysa gerçek nondeterminism, her durumda entropiyi tanıyamamaktır, çünkü sınırsızdır. Tam da bu, klasikleşme karşıtlığından rastgele ayrılan şeydir. Öyleyse NFA, iddia ettiğiniz gibi değil, öncekilerin bir örneği olmalıdır.

.

Daha önce de açıkladığım gibi, “NFA” daki determinizm kavramı, sonlu entropi ile determinist olmayanları birleştiriyor. Dolayısıyla, determinizm, determinizmi bir sıkıştırma veya kolaylık biçimi olarak genişletmemekle ilgili yerel bir kavramdır, bu nedenle NFA'ların deterministik olmadığını, aksine deterministik genişlemeyi hesaplamak istemeyen bir kâhin rastgelelik görünümüne sahip olduklarını söylemiyoruz. Fakat hepsi bir serap, çünkü belirleyici olarak genişletilebilir, çünkü entropi sınırsız değil, yani sonlu.

Sözlükler araçlardır. Onları kullanmayı öğrenin.

rastgele sıfat

İstatistikler. bir kümenin her bir öğesinin eşit olma olasılığına sahip olduğu bir seçim işleminin tanımlanması veya karakterize edilmesi.

Bir sete veya bir sete ait olan veya her biri kendi elemanları ile aynı olma ihtimaline sahip olan bir sete ait olan

Bu nedenle, randomizasyon, sadece bazı girdi entropisinin, eşleştirilebilir olmasını gerektirir, bu nedenle benim tanımımla, bazı girdi entropisinin, fonksiyonun arayanı tarafından kontrol edilememesiyle uyumludur. Rastgelelemenin, giriş entropisinin sonlandırmaya göre kararsız olmasını gerektirmediğine dikkat edin.

Bilgisayar bilimlerinde, deterministik bir algoritma, belirli bir girdi verildiğinde, her zaman aynı çıktıyı üretecek bir algoritmadır, temeldeki makine her zaman aynı durum dizisinden geçer.

Resmen, deterministik bir algoritma matematiksel bir işlevi hesaplar; bir fonksiyon, kendi alanındaki herhangi bir giriş için benzersiz bir değere sahiptir ve algoritma, bu özel değeri çıktı olarak üreten bir işlemdir.

Deterministik algoritmalar bir durum makinesi olarak tanımlanabilir: bir durum, bir makinenin belirli bir anda ne yaptığını açıklar. Durum makineleri bir durumdan diğerine ayrık bir şekilde geçer. Girdiye girdikten hemen sonra, makine başlangıç ​​durumunda veya başlangıç ​​durumundadır. Makine deterministik ise, bu, bu noktadan itibaren mevcut durumunun bir sonraki durumunun ne olacağını belirleyeceği anlamına gelir; devletler dizisindeki rotası önceden belirlenmiştir. Bir makinenin belirleyici olabileceğini ve hala hiçbir zaman durmayacağını ya da bitiremeyeceğini ve bu nedenle bir sonuç veremeyeceğini unutmayın.

Bu bize bize deterministik algoritmaların fonksiyonun girdi durumuna göre tam olarak belirlenmesi gerektiğini, yani fonksiyonun sonlanacağını (veya sonlanmayacağını) kanıtlayamayacağımızı ispatlamamız gerektiğini söylüyor. Vikipedi’nin belirsizleştirici betimleme girişimi olmasına rağmen, yukarıda Vikipedi tarafından tanımlandığı gibi deterministik olan tek antitez, giriş durumu (entropi) yanlış tanımlanmış algoritmalardır. Ve giriş durumunun kötü tanımlanmasının tek yolu sınırsız olduğu zamandır (bu yüzden deterministik olarak önceden algılanamaz). İşte bu kesin olmayan bir Turing makinesini (ve C, Java, Javascript, ML vb. Gibi ortak dilleri tam olarak yazılmış birçok gerçek dünya programını) deterministik T'lerden ve HTML, elektronik tablo formülleri gibi programlama dillerinden ayıran şeydir. Coq, Epigram,

Hesaplamalı karmaşıklık teorisinde, klasik olmayan algoritmalar, mümkün olan her adımda, birden fazla devamlılığa izin verebilecek olanlardır (bir ormandaki bir yolda yürüyen bir adam düşünün ve her adım attığında, istediği yolda hangi çatalıyı seçmesi gerektiğini düşünün). almak). Bu algoritmalar her hesaplama yolu için bir çözüme ulaşmamaktadır; bununla birlikte, bazı yollar için doğru bir çözüme ulaşma garantilidir (yani, ormanın içinden geçen adam, yalnızca "doğru" yolların bir kombinasyonunu seçerse kabinini bulabilir). Seçenekler, bir arama sürecinde tahminler olarak yorumlanabilir.

Vikipedi ve diğerleri, rastlantısallaşmayı sıradancılıkçulukla birleştirmeye çalışıyorlar, fakat eğer onları dikkatlice ayırt etmeyecekseniz, iki kavramın olması ne anlama geliyor?

Açıkçası determinizm belirleme yeteneği ile ilgilidir. Açıkça rastgele randomizasyon, entropinin bir kısmını donatılabilir hale getirmekle ilgilidir.

Bir algoritma durumuna rastgele entropinin dahil edilmesi, onu tespit edilemez kılmak zorunda değildir. Örneğin, bir PRNG gerekli eşitlenebilir istatistik dağılımına sahip olabilir, ancak aynı zamanda tamamen belirleyici olabilir.

Ortogonal kavramları birleştirmek, düşük IQ insanıdır. Bu topluluktan daha iyisini bekliyorum!


4
Bu, nondeterminism'in bilgisayar bilimlerindeki anlamı değildir. Belirsiz algoritmalar "öngörülemez" değildir.
David Richerby

4
Cevabımdaki determinizmin otomata cevaplarında nasıl tanımlandığına dair bir cevabım yok. hesaplanabilirlik teorisi. Shelby, etrafta dolaşmayı bırakıp bir ders kitabı almalısın. Diğer cevapları anlamıyorsanız, bir yorumda size yardımcı olabileceğimizi sanmıyorum.
Raphael

3
@ShelbyMooreIII Belirsizliğin bilgisayar bilimlerinde ne anlama geldiğini tamamen yanlış anladınız. Entropi ile hiçbir ilgisi yok. Bu ne anlama geldiğini düşündüğünüz anlamına gelmiyor: bu yüzden diğer tüm cevapların yanlış olduğunu düşünüyorsunuz. Belki de isim kötü bir şekilde seçilmişti, ama mesele bu değil. Bilgisayar bilimlerinde, diğer bilimlerdeki anlamından farklı olan özel bir anlamı vardır. Yanlış tanımı kullanmaya çalışıyorsunuz ve bu yüzden her şey sizin için tamamen yanlış görünüyor.
David Richerby

4
“İşlemsel karmaşıklık teorisi […] hakkında konuşulurken klasik olmayancılık kavramının kullanımı açıkça entropi ile ilgilidir” - hayır, öyle değil.
Raphael

3
Bu konuda hemfikir olabiliriz: lütfen bize “öğretmeyi” denemekten vazgeç, hiç kimseye yardım etmiyor.
Raphael
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.