Algoritma, dil ve problem arasındaki fark nedir?


40

Görünüşe göre bu sitede, insanlar "algoritmaları" ve "sorunları" karıştırdıkları için başkalarını da düzeltirler. Bunlar arasındaki fark nedir? Algoritmaları ne zaman düşünmem ve problemleri düşünmem gerektiğini nasıl bilebilirim? Bunlar biçimsel dil teorisindeki dil kavramı ile nasıl ilişkilidir?


Bir algoritma, bir problemi çözmenin bir yoludur.
reinierpost

Yanıtlar:


53

Basit olması için, sadece evet / hayır cevabı olan "karar" problemlerini dikkate alarak başlayacağım. İşlev sorunları kabaca aynı şekilde çalışır, ancak evet / hayır yerine, her giriş sözcüğüyle ilişkilendirilmiş belirli bir çıkış sözcüğü vardır.

Dil : bir dil sadece bir dizi karakterdir. gibi bir alfabeniz varsa , Σ , sadece Σ sembollerini içeren tüm kelimelerin kümesidir . Örneğin, { 0 , 1 } * herhangi bir uzunlukta tüm ikili dizilerin bir kümesidir. Yine de bir alfabenin ikili olması gerekmez. Unary, ternary vb. Olabilir.ΣΣΣ{0,1}

Bir alfabe üzerinde bir dil herhangi alt kümesidir Σ * .ΣΣ

Sorun : Bir sorun cevaplanmasını istediğimiz bazı girdilerle ilgili bir soru. Spesifik olarak, bir karar problemi, “Girilen girdiler özelliğini yerine getiriyor mu?X

X

L={wwyXyX}

Bir karar problemine giriş için cevabın "evet" olup olmadığını belirlemek, o girişin bir alfabe üzerinde kodlanmasının ilgili dilde olup olmadığını belirlemekle aynıdır.

Algoritma : Bir algoritma, sorunu çözmek için adım adım bir yoldur. Bir algoritmanın birçok şekilde ve birçok dilde ifade edilebileceğini ve verilen herhangi bir sorunu çözen birçok farklı algoritma olduğunu unutmayın.

M

L(M)={wMw}

RRE

Dil ve Turing Makineleri arasındaki ilişki aşağıdaki gibidir

  1. Her Turing Makinesi tam olarak bir dil kabul ediyor

  2. Belirli bir dili kabul eden birden fazla Turing Makinesi olabilir

  3. Belirli bir dili kabul eden bir Turing Makinesi olmayabilir.

Algoritmalar ve problemler hakkında kabaca aynı şeyi söyleyebiliriz: her algoritma tek bir problemi çözer, fakat verilen problemi çözen 0 veya daha fazla algoritma olabilir.

Zaman Karmaşıklığı : Algoritmalar ve problemler arasındaki en yaygın karışıklık kaynaklarından biri karmaşıklık sınıfları ile ilgilidir. Doğru tahsis aşağıdaki gibi özetlenebilir:

  • Bir algoritma vardır bir zaman karmaşıklığını
  • Bir problem karmaşıklık sınıfına aittir .

f(n)f(n)n

Sorunların çalışma zamanları yoktur, çünkü bir sorun aslında çalışan belirli bir algoritmaya bağlı değildir. Bunun yerine, orada varsa bir sorun, bir karmaşıklık sınıfına ait olduğunu söylemek bazı belirli bir zaman karmaşıklığı ile bu sorunu çözme algoritması.

P,NP,PSPACE,EXPTIMEPXXPXXP


1
Lütfen bu cevabı uygun gördüğünüz gibi düzenlemekten çekinmeyin.
jmite

Başka türden hesaplama problemlerinin (örneğin, arama problemleri) olduğunu söylemenin iyi olacağını düşünüyorum.
Kaveh

1
Kim söylüyor? Bu tür bir düşünce, insanların Turing Makinesi'nin niyetinden önce biçimlendirme ve algoritmada neden bu kadar sıkıntı yaşadıklarının bir parçasıdır. Kilise-Turing Tezi, bir algoritmanın bir turing makinesi olduğunu ve bunun tersi olduğunu ve tüm turing makinelerinin durmadığını söylüyor.
jmite

4
Ahbap, bu gördüğüm en büyük cevap. Tüm bilgisayar bilimlerini sadece 1 sayfada özetlediniz.
CaptainCodeman

1
@ gnasher729 o doğrulayarak açısından tanımlanabilir söyleyen bir teoremi var, ama onun gerçek tanımı böylelikle adı Sigara deterministik makineleri için zaman karmaşıklığı bakımından NP geçerli: polinom nondeterministic
jmite
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.