TCS'yi anlamada saplanma stratejileri


19

Hesaplama teorisinde ders alan bir yüksek lisans öğrencisiyim ve istendiğinde içerik üretmekte ciddi sorun yaşıyorum. Ders kitabını (Michael Sipser tarafından Hesaplama Teorisine Giriş) ve dersleri takip edebiliyorum; ancak bir şeyi kanıtlaması ya da belirli bir TM'nin resmi bir tanımını bulması istendiğinde boğuldum.

Bu gibi durumlarda ne yapabilirim? Sanırım benim sorunum, soyut kavramları gerçekten kullanabileceğim noktaya kadar tamamen anlamak. Yeni, soyut bir konsepte yaklaşmanın ve nihayetinde sezgiyi inşa etmenin yapılandırılmış bir yolu var mı?


5
beni aşar. Bu, bu site için makul bir soru gibi görünüyor.
Suresh

4
Kapatmaya oy verdim. Gördüğüm ana mesele, sorunun aslında bilgisayar bilimi ile ilgili olmaması; bilgisayar biliminin nasıl öğrenileceği ile ilgilidir. İkincisinin objektif bir cevabı yoktur, çünkü her insanın en iyi yolu olacaktır. Kapatılacak üç oyun hepsi "çok yerelleştirilmiş" gerekçeye atandı, ancak bence bu soru aynı zamanda konu dışı, çünkü bilgisayar bilimi ile ilgili değil.
Carl Mummert

1
Bence bu soru liyakat ve yoğun bir şekilde mücadele ettiğim soru tipine sahip. Güvenilir bir topluluktan bu tür konularda rehberlik almanın birçok CS öğrencisinin uğraştığı bir şey olduğunu düşünüyorum. Yine de sorunun itirazını anlıyorum. Bana öyle geliyor ki, soru bu sitenin meta bölümü için oldukça uygun.
BrotherJack

6
@CarlMummert: Bilgisayar bilimi hakkındaki her soru, bilgisayar biliminin nasıl öğrenileceğiyle ilgili bir sorudur.
JeffE

2
Soru mevcut haliyle aşırı derecede geniştir. Sorunuzu odaklayın, örneğin kursta soruyu çözme yeteneğinizi geliştirmeye yardımcı olmak için kaynaklar (örneğin, sorunlu kitaplar) isteyin veya bu soruna odaklanan belirli bir örneğiniz varsa ve benzer sorunlara yaklaşmak için sezgi veya yöntemler sorun.
Kaveh

Yanıtlar:


15

Soyutlama, bilgisayar biliminde hemen hemen ekmek ve tereyağıdır, ancak maalesef açıkça öğretilmesi zordur.

Kanımca, kavramları anlamak , bir şeyi mekanik olarak hesaplamak ya da kanıtlamaktan daha önemlidir. Tabii, bazı temel yöntemlerde yolunuzu bilmeniz gerekiyor, ancak et başka yerlerde yatıyor.

Her şeyden önce, içeriği bir ölçüde kavramanız gerekir. Bu amaçla, sizin için bir şey belirsiz olduğunda aşağıdaki soruyu sormanın yararlı olduğunu buldum:

  • Bunu neden yapıyoruz?
  • Bunu ne için kullanacağız?
  • Bu benzer şeylerle ilgilidir?
  • Diğer kaynaklar bunu nasıl açıklıyor?
  • Ne tam olarak anlamıyorum?

Bu soruları cevapladıktan (veya takip sorularını keşfettikten ve aynı şekilde ele aldıktan) ve hala sorun yaşadıktan sonra öğretmenlerinize (veya buraya) gidin. Şimdiye kadar, odaklanmış, kesin olarak formüle edilmiş bir soru formüle edebilmelisiniz; bu tür soruları yanıtlamak öğretmenlerinizin işi (ve StackExchange'in felsefesi).

Bunun dışında egzersiz ve deneyimdir. Kanıtları okuduktan sonra yeniden oluşturmaya çalışın; onları ezbere öğrenmemeye özen gösterin ama önemli fikirleri onlardan damıtın. Bir süre sonra, tüm temel kanıtları ana adımlar arasındaki boşlukları doldurarak yeniden üretebilmelisiniz. Daha sonra bile, ifadelerde ve kanıtlarda kalıpları görmeye başlayacaksınız. İnsanlar böyle bir ifadeye bakar ve "Oh evet, tabii ki, Y teoremiyle X yöntemini kullanın ve sonra istediğinizi elde etmek için Z'yi kullanın." Yıllarca süren eğitimin desteklediği örüntü tanımadır. Sabırlı ol.

Temel alıştırmalara gelince, bazı ders kitaplarını bulun. Başımın Kapalı ben başvurabilirsiniz Matematik Betona Graham, Knuth ve Patashnik tarafından. Bu kitap sadece bilgisayar bilimcileri için değerli bir araç kutusu değil, aynı zamanda çözümler içeren çok sayıda alıştırma içermektedir (!). Cevaplara bakmadan önce bunları çözmeye çalışmayı ve aramak zorunda olduğunuz cevapları yeniden oluşturmayı unutmayın.

Bir başka yararlı kitap ise Cormen, Leiserson, Rivest ve Stein'ın Algoritmalarına Giriş . Matematiksel temeller üzerine büyük bir bölüm dahildir. Ayrıca birçok alıştırma içerir; çözümlere bağlantı verilen sayfadan ulaşılabilir (Ek İçerik). Ayrıca yazarlardan birinin kitapla iyi geçebilecek bir video dersi var .

Kanıtlarla ilgili tanıtım dersleri için Khan Academy'deki Lineer Cebir Kanıtlarına bir göz atın . Onları izlemedim, ama umarım hem temel hem de yardımcı olurlar. Khan Academy hakkında daha fazla kanıt var; Doğrusal cebir kanıtlarının bilgisayar bilimine en iyi uyabileceğini düşünüyorum. Başkalarını da izlemekte tereddüt etmeyin.


7
Kavramları anlamanın, şeyleri hesaplama veya kanıtlama yeteneğinden daha önemli olduğunu kabul ediyorum. Ancak anlayış, hesaplamalar ve kanıtlarla yapılan uygulamanın sonucudur , o uygulamanın yerine geçmez.
Jeff

İçgörü için teşekkürler. Tavsiyeni candan alacağım ve buna dayanarak gelişmeye çalışacağım.
trigoman

Daha temel ihtiyaçlar için İspat Kitabı değerli bir referans olabilir.
Raphael

8

Bazen teoride iyi sonuç vermeyen insanların temelleri yanlış olduğunu öğreniyorum (ilk 1-3 derslerde, malzemenin çok kolay olduğunu düşündüler, bu yüzden çok fazla dikkat etmediler, ama sonra, derste 5-7 şey hızlanır ve özetlemek için çok geç).

@Fbernardo'nun dediği gibi, baştan başlamak iyi bir fikir olabilir. FLA kadar değil (TC, IMHO okurken bunun bir faydası yoktur), ama kesinlikle Sipser'i açın ve soruları sıralarına göre tek tek çözmeye başlayın. Deneyim ile daha gelişmiş konseptler için zorunlu olan sezgisel ve temel araçlara sahip olacaksınız.

Sipser'in ilk bölümle ilgili temel sorularıyla başa çıkamıyorsanız (TM'ler üzerinde çalışıyorsanız, otomata bölümleri değil), temel kanıt yöntemleri (indüksiyon vb.) Veya temel set gibi daha temel kavramlardan yoksun olabilirsiniz. teorisi ve ayrık matematik.

Her neyse, iyi şanslar!


3

Benim tek tavsiyem baştan başlamanızdır. Kursumda Sipser'in kitabını da kullanıyoruz, bence iyi bir kitap. Ancak TC'den önce, TC için daha iyi bir sezgi ve arka plan sağlayan FLA (Formal Languages ​​a Automaton) adlı bir kursumuz var. Yine, herkes farklı oranlarda öğreniyor ve çok iyi bir kitabınız var. Burada her zaman yardım bulabileceğiniz başka herhangi bir soru. :)


2

Başlığınızda genel bir soru ve ardından soruda en az iki temel / spesifik nokta soruyorsunuz ve bence her birine iyi (ayrı) cevaplar var:

  • bir şey nasıl kanıtlanır
  • TM davranışının resmi açıklaması

Burada sadece 1. maddeye hitap eden (doğası gereği geniş ve hak ediyor) - STEM (bilim, teknoloji, mühendislik, matematik) eğitim odasındaki fil kısa bir şaşkınlığa uğrayan ve genellikle şaşırtıcı derecede parıldayan . Hiç kimse kanıtların nasıl oluşturulacağını öğretmeyi gerçekten bilmiyormuş gibi görünebilir. Bu konu geometri, trigonometri ve matematik sınıflarında başlar, ancak nadiren katı bir unsurdur. çoğu öğretmen bunu isteğe bağlı olarak görür. Görünüşe göre, "bir şeyler nasıl kanıtlanır" a adanmış bütün bir sınıf, STEM eğitimine mükemmel veya hatta kritik bir ekleme veya değişiklik olabilir.

İşte nasıl kanıtlamak için hızlı bir arama ortaya çıktı bazı referanslar, ve bence başka birçok iyi kaynak var. Günümüzde de konuyla ilgili aramalar yoluyla açılabilecek birçok video var, ancak "nasıl malzeme kanıtlanır" tipi videolar içeren güzel ve kapsamlı bir organizasyon görmedim.

İspatlamanın önemli bir parçası, matematiğin temellerinde ustalaşmak ve hepsini araç veya yapı parçası olarak kullanmaktır. Örneğin, bir kümenin ne olduğunu, bir grubun ne olduğunu, farkın / benzerliğin ne olduğunu, birini kullandığınızda, diğerini kullanmamanız vb.

Başka bir yaklaşım, bir tatbikat gibi davranmaktır. Kolaydan zora doğru başlayarak birçok uygulama kanıtı yapın (keşke böyle daha fazla kitap bilsem, çok fazla görünmüyor).


1
Pólya'nın klasik "Nasıl çözülür" ekleyin. Matematiksel yazma için etrafa bakmak da (özellikle mezunlar için) yararlıdır, örneğin Knuth ve ark. "Matematiksel yazma". Bu, sıklıkla verilen bir beceridir.
vonbrand
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.