İspatlarınızı nasıl aşağı çekersiniz?


59

İspatlarınızı kontrol etmek için genel kurallar nelerdir? Bunun benim gibi mezun öğrenciler için önemli olduğuna inanıyorum. Bir şeyi kanıtlamak için ne yapmamız gerektiğini zaten biliyorum, ancak göndermeden önce her zaman her şeyi kontrol etmeniz gerekir. Kendi danışmanına bile.

Deneme-yanılma ile kendime bazı stratejiler geliştirdim ve danışmanımdan çok tavsiye aldım. Ancak bu her zaman çok sıkıcı bir iştir. Normalde, bir şeyle işiniz bittiğinde, sadece bir sonraki soruna devam etmek istersiniz, fakat her şey mükemmel olana kadar hala mevcut soruna devam etmek zorundasınız. Burada kendi numara listeme bir örnek sunuyorum:

  1. Detayları doldur. Yerinde bir sürü hata var; “genellik kaybetmeden…”, “genellik kaybı olmadan ...” yazıyor muydunuz?
  2. Birkaç numara dene. " veya olduğunda ne olur" gibi aşırı durumları deneyin .n = 1000n=1n=1000
  3. Temiz bir defter bulundurun. Her gün üzerine yaz ve kaba notlarınla ​​karşılaştır. Lateksle de yazmaya çalışıyorum, bu şekilde birçok hata buldum.

İspatlarınızı kontrol etmek için uyguladığınız genel stratejiler nelerdir?

Bu sorunun amacı onu topluluk-wiki yapmaktır.


Soru öznel görünüyorsa, lütfen geliştirmeme yardımcı olun.
Marcos Villagra

Bu topluluk-wiki'yi nasıl yaparım?
Marcos Villagra

1
Hey, havalı! Bu sorunun cevabını gerçekten merak ediyorum. Ayrıca, # 3'ünüzü takdir edebilirim. (Bunu düşündüğümde, aslında bir sorun üzerinde çalışırken her yere dağılmış kağıt yığınlarım var. Bu da rastgele yer değiştiriyor. Yuck.) Bu sorundan önce bir hatayla karşılaştım ve boşa harcadım iyi bir zaman parçası.
Daniel Apon

@ Daniel: Ben de aynı problemi yaşadım !! Bu yüzden ispatla bitirdikten sonra hemen lateks sürümünü yazıyorum. Her şeyi her yerde tutan tek dağınık adam olmadığımı bilmek güzel :-)
Marcos Villagra

1
moderatör dikkatine işaretlediniz.
Suresh Venkat

Yanıtlar:


39

Yazılım mühendisleri " kod kokuyor " olarak adlandırıyorlar. Bunlar, kodda daha derin bir sorun olduğunu gösterebilecek belirtilerdir. Yazılım mühendisleri, farkında olmak için zihinsel koku listelerini toplarlar (yani aşırı uzun yöntemler veya çok fazla parametre). Bu mutlaka bir sorun olduğu anlamına gelmez, ancak yazarın iki kez kontrol etmek isteyebileceğini gösterir.

Ayrıca "kanıt kokuyor" olarak düşünmemiz gerektiğini öneriyorum . Bu size kanıtlarınızı kontrol etmek için bir algoritma sunmayacak, ancak kanıtlardaki olası sorunları tanımak için bir dil ve bir metafor verir. Bazı kanıt örnekleri kokuyor:

  1. "Açıkça", "Açıkça", vb.
  2. Sonucu referans almak yerine önceki bir sonucun ispatına referans.
  3. Çok sayıda teknik ön koşulla bir sonucun saygısız kullanımı.

Daha ince kokular da var. Örneğin, bir ispat bir ifadeyi genişletmek için binom teoremini kullanır ve daha sonra binom teoremini kapalı bir forma dönmek için kullanırsa, o zaman belki de kapalı formda aynı sonucu veren doğrudan bir manipülasyon vardır.

Benim önerim, bu tür kokuların (zihinsel veya yazılı) bir listesini toplamak ve çalışmalarınızı okuduğunuzda onları kontrol etmektir. Bu yaklaşımın güzel yan etkisi de sizi daha iyi bir okuyucu yapmasıdır.

Not: Bu cevabımdaki umudum, Lamport'un M. Alaggan'ın cevabında referans verilen bir Kanıt Nasıl Yazılır? Tarafından verilen kesin cevaba sezgisel bir taraf kazandırmaktı.


4
Bunu her zaman öğrencilerime söylüyorum ve deli olduğumu düşünüyorlar. Tabii ki, problemin bir parçası olabilecek bir böcek kokusu alabileceğimi iddia ediyorum;)
Suresh Venkat

7
@Suresh: Bu öğrenci farklı nedenlerden dolayı deli olduğunu düşünüyor. ;-)
John Moeller

4
Kod koku notunda, başkalarının kanıtlarında her zaman incelemeye çalıştığım şeyler arasında eşitsizlik zincirleri var. Genellikle gerçekten temel hataların, daha zor türevler arasında sürünme alışkanlığı vardır.
John Moeller

23

Leslie Lamport'tan çok iyi bir makale var ( Kanıt nasıl yazılır ). Aslında onun tarafından ayrıntılı kanıtlar yazma biçiminde bir öneri:

(1) Hataları düz bir şekilde algılamayı sağlar

(2) Hangi parçalarda hangi varsayımların ve teoremlerin kullanıldığını netleştirir, (örneğin) daha zayıf varsayımlar kullanmak istersen ne olacağını görmeyi kolaylaştırır.

Genel olarak olumlu bir deneyim sergileyen MO'da bu tekniğe ilişkin bazı topluluk deneyimleri ve ilham verici yorumlar da bulunmaktadır (ve diğer bazı kaynaklar da).

Güncelleme: yeni bir sürümü var 21. yüzyıl kanıtı nasıl yazılır .


5
Bu kanıtlar, bir PL araştırma makalesinde yazılanlara çok benzer. Mantık zinciri çok açık. PL tarzı provaları okumayı ve takdir etmeyi öğrendikten sonra, "normal" matematik provalarını anlamayı zor buldum. Bu tür ispatlar, okuyucunun yazarın yaptığı gibi düşünmesini gerektirir ve farklı bir ispat stiline alıştığınızda, bu basitçe durum böyle değil (en azından benim için!)
Christopher Monsanto

2
@Christopher Monsanto: PL, Programlama Dilleri anlamına mı geliyor? Kontrol etmek için böyle bir örnek (böyle bir makale)
bahsedebilirseniz sevinirim

5
Lamport’un önerdiği şeyin Paul Lockhart’ın “Bir Matematikçi’nin Lamenti ” ile uyumlu olmadığını her zaman hissettim ( maa.org/devlin/LockhartsLament.pdf ).
Marcos Villagra


14

Fizikçilerin benzer bir problemle nasıl başa çıktıkları konusundaki popüler bir hesabı okuduğumu hatırlıyorum. Aşağıdaki sürümünün ne kadar doğru olduğunu kim bilebilir; düzeltmeler açıktır. Ancak, altta yatan stratejiyi oldukça dikkat çekici buldum.

Kara deliklere nasıl inandıklarını açıkladılar. Kara delikler başlangıçta tamamen fizikteki solucan delikleri gibi diğer garip nesneler gibi matematiksel yapılardı. Stratejileri çarpıcıydı: matematiksel olarak test edilecek nesneye diğer nesneleri fırlatırlardı. Solucan delikleri testlerinde başarısız oldu çünkü solucan deliğinin normal bir fiziksel cisim, hatta bir asteroit varlığında bile çökeceğini buldu. Ancak kara delikler bu testi geçti: kara delik, üzerine atılan bir asteroitle hayatta kalacaktı. Böylece ona bir yıldız atmaya çalıştılar. Aynı sonuç. Sonunda kara deliğe başka bir kara delik daha attılar ve hayatta kaldılar. Bunun sonucunda, kara deliklerin varlığında, kendilerini gerçek evrende aramaya başlayacak kadar kendinden emin oldular.

Bu yüzden yukarıdaki stratejinin uygunluğu ve uygulanması kanıtları atmaya başlar. Akıl sağlığı kontrolünden kurtulur mu ? Gerekli bir varsayımı kaldırırsanız, olması gerektiği gibi çöküyor mu? Kapsamı dışındaki davalara uygulandığında olması gerektiği gibi çöküyor mu? Makul genelleştirmelere ve uzmanlıklara dayanıyor mu? Göz at sezgisel listesinde Polya en içinde çözme It nasıl . İspatınızı bu buluşsal yöntemlerle değiştirmeyi deneyin ve olması gerektiği gibi durup durmadığını görün.


Cevabınızın çoğu, yanlış olmaları gereken durumlarda yanlış olduklarını doğrulayarak ispatları kontrol etmeye odaklanır. Bu işe yaramıyor çünkü teoremin gerçek olması gereken yerde doğru olduğunu kontrol etmiyor! Örneğin, her tek sayının üçe bölünebilir olduğunu "ispatladığımı" varsayalım. Ben de sayıları bile uzattığımda kanıtımın başarısız olduğunu kontrol ediyorum: dördü üçe bölünemediği için. Yaşasın, kanıtım doğru olmalı!
David Richerby

12

Bence en güvenli yaklaşımlardan biri birden fazla bağımsız kanıt bulmak. O zaman, bir kanıtın ayrıntılarında yanlışlık olsa bile, ana sonucunuzun doğru olduğundan emin olabilirsiniz.


9

Yararlı bulduğum bir teknik, kanıt stratejisinin başka hangi sonuçları kanıtlayabileceğini düşünmektir. Prova stratejisini büyük bir açık problemi veya hatta açık olmayan, ancak prova stratejisinin karmaşıklığına kıyasla çok karmaşık bir çözüme sahip olan bir problemi kanıtlamak için kolayca adapte edebilirsem, o zaman şüphe etmek için büyük bir neden kanıt.


5
PNP

6

Kanıtlarımı her zaman COQ veya ISABELLE gibi bir onay denetleyicisi ile tekrar kontrol ederim . Kanıtınızı bu programlama dilinden birinde kanıtlayabilirseniz, kanıtınızın doğru olduğundan emin olabilirsiniz. Bir lambda terimi kadar basit;).


Coq'u hiç kullanmadım, ama denemeliyim. Aslında, matematiğin alt sınırlarını kanıtlamaya çalışıyorum, ancak doğru yolu bulamadım. Belki bazı özel paketlere ihtiyacım var.
Marcos Villagra

1
Belki de uzun bir görüş olabilir, ancak gerçeklerle bazı alt sınırlar kanıtlamak istiyorsanız, şu kütüphaneleri kontrol edebilirsiniz: coqtail.sourceforge.net/?home/tr
Gopi

Kabul, ancak herhangi bir programlama dili çalışıyor. Çoğu zaman bunu tersten yaparım. Sorunlu alanı bir programlama dilinde (genellikle Ruby'de) formüle edin, ardından bunu kanıtım için şablon olarak kullanın.
Chad Brewbaker
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.