Bu sonlu grafik problemi karar verilebilir mi? Hangi faktörler problemi karar verilebilir kılar?


17

Aşağıdaki sorunun karar verilebilir olup olmadığını ve nasıl bulunacağını bilmek istiyorum. Gördüğüm her sorun ona "evet" ya da "hayır" diyebilirim, bu yüzden çoğu sorun ve algoritma ( burada sağlanan ) dışında bir çok karar verilebilir mi?

Girdi: Yönlendirilmiş ve sonlu grafik , v ve u köşeleri ile Soru: G'de başlangıç ​​noktası olarak u ve son tepe noktası olarak v olan bir yol var mı?Gvu
Guv


Yanıtlar:


18

Sadece sonlu miktarda verinin incelenmesini gerektiren herhangi bir problem çözülebilir, çünkü tüm potansiyel çözümleri numaralandırmayı içeren bir algoritma vardır. Gülünç derecede yavaş olabilir, ancak bu ilgili değildir: bir algoritma varsa, karar verilebilir.

Belirttiğiniz sorun, bunun karar verilebilir olduğunu kuvvetle ima eden sonlu bir grafik olduğunu varsayar. Kesinlikle konuşmak gerekirse, biraz daha fazla bakmanız gerekiyor. Sorun, grafikteki yollardaki bir özelliktir ve grafik bir döngü içerdiğinde bazen sonsuz sayıda yol vardır (bu döngüde istediğiniz kadar döngü yapabilirsiniz). Ancak, sorunu sonlu bir soruna dönüştürmek kolaydır: ile başlayan ve bir döngüyü içeren v ile biten herhangi bir yol varsa , o yoldaki tüm döngüleri kesebilirsiniz ve bunu yapan yeni bir çözümünüz vardır. bir döngü içermez. Döngü içermeyen sınırlı sayıda yol olduğundan (grafiğin k kenarları varsa, en fazla k vardır !uvkk!birden çok kez aynı kenar) kullanmayın yolları, bir yol bulma problemi için v dolayısıyla Karar verilebilen, sonlucu olup.uv

Bu arada, bu özelliğe bağlantı denir .

Bu yaklaşım, azaltma adı verilen yaygın bir yaklaşımdır . Basit olmayan bir sorun göz önüne alındığında, bunu nasıl çözeceğimizi bildiğimiz bir soruna indirdik.

Bir sorunun çözülemez olduğunu kanıtlamak genellikle zordur. Bir sorunun karar verilebilir olduğunu kanıtlamak için tek yapmamız gereken, ona karar veren bir algoritma sergilemektir. Bir sorunun kararlaştırılamaz olduğunu kanıtlamak için, hiçbir algoritmanın mevcut olmadığını kanıtlamamız gerekir. Bilinen bazı kararsız sorunlar var. Uygulamada, çoğu zaman, bir sorunun kararsız olduğunu kanıtladığımızda, sorunumuzu azaltan iyi bilinen kararsız bir problem olduğunu gösteririz. Sorunumuz için bir algoritma iyi bilinen kararsız sorunu çözeceğinden, sorunumuzun da kararsız olması gerekir.

“En” problemlerin karar verilebilir veya “en” problemlerin karar verilemez olduğunu söyleyemezsiniz. Bazı teorik anlamda, neredeyse tüm problemler kararsızdır, ancak “ilginç” problemlerle başa çıkma eğilimimiz yüksektir ve bunların bir çözümü olması daha olasıdır.


15

Gilles, bir yorumda belirtildiği gibi, sorun kesinlikle kararsızdır. Diğer sorunuza gelince ...

sorunların ve algoritmaların birçoğu ( burada verilen ) dışında karar verilebilir mi?

Hayır! Aslında çoğu problem undecidable bulunmaktadır. Aslında, sayılamayacak kadar çok sorun (dil) vardır, ancak sadece sayılabilen birçok Turing Makinesi vardır, bu da en fazla sayılabilecek birçok karar verilebilir sorun olduğu anlamına gelir.


8

Evet, bu karar verilebilir, çünkü olası tüm yolların kapsamlı bir aramasını yapabilirsiniz. "Dolambaçlı yol" atlanabileceğinden, bir tepe noktasını tekrarlayan herhangi bir yola bakmaya gerek yoktur. Ancak, tekrarlayan olmayan herhangi bir yolun uzunluğu, grafiğin boyutuyla sınırlıdır, bu da sonludur ve bu nedenle, tek tek kontrol edilebilen bu tür yolların sadece sonlu birçok yolu vardır.

Gabab


Girdiye bağlı değil mi? Yani verilen bilgi cevabı bulmak için yeterli olmadığında, bunun doğrulanamayacağını mı söylemeliyim?
Gigili

Ne istediğini bilmiyorum; tarif ettiğiniz sorun için girdi cevabı bulmak için yeterlidir.
Carl Mummert

@Gigili Sorun çözülemezse, tüm girdiler için evet veya hayır çıktısı veren bir algoritma bulmak imkansız olurdu. BFS ile her zaman bir yolun olup olmadığını her zaman belirleyebiliriz (doğrusal zamanda da) bu problemde durum böyle değildir.
Zach Langley

@ZachLangley: Evet, genel davayı soruyordum. girdi olarak verilen bilgiler sorunu çözmek için yeterli değilse, sorun çözülemez mi?
Gigili

uvuv

7

Belirli bir sorunun karar verilip verilemeyeceğini söyleyen bir yöntem yoktur. Zamanla, belirli bir sorunun karar verilip verilmeyeceği konusunda iyi bir "önsezi" alabilirsiniz.

Genelde yaptığım şey şudur:

  1. sorunu çözmeye çalışın. Yani, verilen problemi çözen bir bilgisayar programı düşünmeye çalışın. Önerdiğiniz sorun için - çok basit bir program sadece olası herhangi bir yolu kontrol edecek ve böylece her zaman (varsa) bulmayı başaracak veya size başka bir yol olmadığını söyleyecektir.
  2. problemi açık bir şekilde formüle edebilir. Birçok sorun çok belirsizdir, ancak açıkça yazıldığında karar verilebilir olup olmadığını görmek çok kolaydır (diğer problemlerle karşılaştırılarak, kararsız / kararsız olduğu veya Rice teoremi gibi bilinen yöntemleri kullanarak )
  3. (2) işe yaramadıysa, ancak sorunun hala kararsız olduğuna inanıyorsanız, kararsız bir problemden (Durma problemi (veya tamamlayıcısı) birçok durumda işe yarıyor) bunu kanıtlamaya çalışın.

Neredeyse her zaman, çözümlenemeyen bir sorun için adım (1) 'i yapmaya çalışırken, sonsuz sayıda şeyi kontrol etmek için programınıza ihtiyacınız olacaktır . Bu genellikle sorunun karar verilemeyeceğinin bir işaretidir.

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.