Farklı ses ve yorumların yorumlarını duydum . Anlıyorum tamlık varsa çözüm bulunmasının aracı. Bir algoritma demek demek ses demektir .
Bir algoritmanın Ses ve Komple olduğunu söylemek ne anlama gelir?
Farklı ses ve yorumların yorumlarını duydum . Anlıyorum tamlık varsa çözüm bulunmasının aracı. Bir algoritma demek demek ses demektir .
Bir algoritmanın Ses ve Komple olduğunu söylemek ne anlama gelir?
Yanıtlar:
Bunlar mantıkla ilgili olarak çok özel terimlerdir.
İşte bazı başlangıç noktaları:
http://en.wikipedia.org/wiki/Soundness
http://en.wikipedia.org/wiki/Completeness_(logic)
Temel olarak, sağlamlık (bir algoritmanın), algoritmanın doğru olmayan herhangi bir sonuç vermeyeceği anlamına gelir. Örneğin, bazen sıralanmış bir liste döndürmeyen bir sıralama algoritması varsa, algoritma sağlam değildir.
Diğer taraftan, eksiksizlik, algoritmanın olası tüm girdileri ele aldığını ve hiçbirini kaçırmadığını ifade eder. Öyleyse, sıralama algoritmam sıralanmamış bir liste döndürmediyse, ancak 7 sayısını içeren listelerde çalışmayı reddettiğinde, tam olmazdı.
Tüm girdiler üzerinde çalışıyorsa (program dünyasında anlamsal olarak geçerli) eksiksiz ve sağlamdır ve her zaman doğru yanıt alır.
Erik Dietrich'in cevabını biraz kafa karıştırıcı buluyorum. Aşağıdaki daha iyi:
Bir algoritma ses, eğer bir cevap verirse, bu cevap doğruysa doğrudur. İsteğe bağlı herhangi bir giriş için doğru bir cevap vermeyi garanti ederse bir algoritma tamamlanır (veya cevap yoksa, başarısızlık vermeyi garanti eder).
İki önemli nokta:
Örnek olarak, bir sayı listesi girişi olarak alan bir sıralama algoritması A düşünün. Sonuç her zaman sıralanmış bir liste olduğunda sonuç döndürdüğünde A'nın ses çıkardığını söyleriz. Aynı şekilde, bir numara listesi verdiğimizde, sıralanmış bir listeye geri dönmeyi garanti ederse, A'nın tamam olduğunu söyleriz.
Bu terimler hesaplama teorisinden geldi, bu yüzden hesaplama teorisi bağlamında yazılım mühendisliği bağlamından daha anlamlılar.
Çoğu standart hesaplama modelinde hesaplama problemleri dil olarak gösterilmiştir . Dil, bir dizi dizedir. Bir algoritma, o zaman, sadece verilen bir dizgenin bir dilin üyesi olup olmadığına karar veren bir sistem veya prosedürdür (doğru veya yanlış döndürerek). Yazılım mühendisliği terimlerinde, hesaplama teorisi, karakter dizilerinin değişmez olduğunu varsayarak, bunun gibi görünen fonksiyonlarla özellikle ilgilidir:
boolean some_function(string argument){...}
Dilin bir üyesi olan her bir argüman için doğru olursa, bu işlevi tam olarak adlandırırız . Dilin üyesi olmayan her bir argüman için yanlış döndürürse ses olarak adlandırırız .
Başka bir deyişle, doğru olmasını istediğimizde her zaman doğru dönerse tamamlanır, yanlış döndürmesini istediğimizde her zaman yanlış döndürürse ses çıkar.
Bu nasıl diğer fonksiyonlara çevrilebilir? Görünen o ki, rastgele bir miktarda veriyi bir dizgeye yerleştirmek ve onu fonksiyonun içinde yeniden oluşturmak neredeyse her zaman mümkün. Dolayısıyla argüman türü ve aritelik üzerindeki kısıtlama, teorik bir basitleştirmeden başka bir şey değildir. Bununla birlikte, iade tipi üzerindeki kısıtlama daha önemlidir. Boole sonucu gerektiren sorunlara karar sorunları denir . Çoğu hesaplama teorisi karar problemlerini içerir; P ve NP setleri karar problemleriyle sınırlıdır (ve NP, en azından NP bu kısıtlama olmadan makul bir şekilde tanımlanamamıştır). Durma problemi, yoğun olarak çalışılan bir karar probleminin bir başka örneğidir.
Benim görüşüme göre, bu terimler karar problemleri alanı dışında genelleşmiyor, bu yüzden genel bir işlevi tartışırken aralarındaki fark gerçekten anlamlı değil.
SO'da çok daha iyi cevaplar var . Temel olarak, bazı veri toplama ve aramak için kriterler sağlar. Ses algoritması sizi yalnızca ölçütlere uyan balıkları yakalar, ancak bazı veri öğelerini kaçırabilir. Tam bir algoritma , istenen sonuçların bir üst kümesini oluşturur; bu, istenen sonuçların üzerine biraz çöp attığınız anlamına gelir. Ses algoritması daha muhafazakardır.
İstatistikçiler muhtemelen ses algoritmasının tip I hatalarına karşı yanlı olduğunu (IDA'yı doğru kabul etmeyen), tam algoritmanın tip II hatalarına (yanlış adayları kabul etmek için) önyargılı olduğunu söyler .