Konuşma notu: Kullandığınız her düzenleyici, derleyici ve arama motoru bugünkü derste anlatılan fikirlere yaslanır — bir dizginin bellekte nasıl durduğu, ve bir dizgiyi başka bir dizginin içinde hızlıca bulmak.
Konuşma notu: On üç kısa animasyon tüm dersi taşıyor; her fikir tanıtıldığı yerde bir normal, bir uç/zor çalıştırma alıyor.
Konuşma notu: Her terim ilk geçtiği yerde tam tanımını alır; bu tablo yalnız nerede yeniden bulunacağını söylüyor.
Konuşma notu: Canlı çalıştırmak isterseniz şimdi bir terminal açın; bugünkü her slayttaki parça gösterildiği gibi derlenir ve çalışır.
Konuşma notu: Bir C dizgisinin bellek düzeni hakkında yeni bir şey yok — yalnız "nerede bitiyor" kuralı yeni.
Konuşma notu: Bir trie "Hafta 4'ün ağacı, ama dallanma çarpanı alfabe boyutu"dur. Rabin-Karp "Hafta 6'nın hash'i, artımlı hale getirilmiş"tir.
Konuşma notu: Bu gerçekten yeni bir mekanizma — bugünün "yalnız daha fazla arama algoritması" gibi hissettirmemesi için baştan işaretlemeye değer.
Konuşma notu: Bu haritadaki her kutu aşağıda kendi slaytlarını alıyor, çoğu kısa bir animasyon ve eksiksiz bir C/Java programıyla.
Konuşma notu: Bölüm 1, sonraki her bölümün varsaydığı tek kuralı kurar: bir C dizgisi bir char dizisi artı bir NUL sonlandırıcıdır, başka hiçbir şey değil.
Konuşma notu: Cevap — tek bir ayrılmış bayt — elli yılı aşkın süredir C programlamayı (ve C hatalarını) şekillendirdi.
Konuşma notu: Pascal tarzı dizgilerle karşılaştırın, onlar gerçekten bir uzunluk baytı saklar — gerçek sonuçları olan bir tasarım kararı.
Konuşma notu: "Başkasının postası", tanımsız davranışı — sahip olmadığınız belleği bozmayı — anlatmanın dostane bir yolu.
Konuşma notu: "Hiçbir kestirme yol yoktur", bu bölümdeki her karmaşıklık sonucunu açıklayan tek gerçektir.
Konuşma notu: Tehlikeyi BAYRAKLAYARAK ve durdurarak gösteriyoruz — asla gerçekten bir sınır dışı yazma çalıştırarak değil.
Konuşma notu: Normal örnek: cap=16, "HELLOWORLD" rahat sığar — kopyalama döngüsünü, sonlandırıcıyı, sonra strlen'in ikinci yürüyüşünü izleyin.
Konuşma notu: cap=8, 10 harflik bir kaynak — `if (i == cap) break;` korumasının kopyalamayı sınır dışına çıkmadan bir yazma önce durdurduğunu izleyin.
Konuşma notu: Koruma satırı, tehlikeli bir saf strcpy döngüsünü güvenli, öğretilebilir bir döngüye çeviren TEK ekleme.
Konuşma notu: Bu tek satırlık tuzak (döngü koşulunda strlen), C'deki en yaygın kazara-karesel hatalardan biridir.
Konuşma notu: "Her tek çağrıda"yı vurgulayın — bu, öğrencilerin sonraki derslerde en sık unuttuğu gerçektir.
Konuşma notu: `==`, C'de karakterleri değil işaretçileri karşılaştırır — farklı adreslerdeki aynı görünen iki dizgi eşit çıkmaz.
Konuşma notu: Cevabı açıklamadan önce birkaç el kalksın — gerçek kodda çok yaygın bir birer-eksik hatasıdır.
Konuşma notu: Bunu taşma animasyonuyla ilişkilendirin: tam olarak "cap=8, 10 harf"in gösterdiği eksiklik budur.
Konuşma notu: Bölüm 2, "son uzunluğu önceden bilmiyorsak ne olur?" sorusunu yanıtlıyor — Hafta 1'in dinamik dizisinin sayılar için yanıtladığı aynı soru.
Konuşma notu: Bu tam olarak java.lang.StringBuilder'ın, C++'ın std::string'inin, ve Hafta 1'in dinamik dizisinin içeride yaptığı şeydir.
Konuşma notu: "+1 değil, katlama" seçimi, bu bölümün karmaşıklık argümanının tüm içeriğidir.
Konuşma notu: "Üstel olarak seyrekleşir", karmaşıklık slaytındaki amorti edilmiş analiz argümanının sezgisel versiyonu.
Konuşma notu: Normal örnek: initCap=4, "HELLOWORLD" — arabelleğin dolduğunu, kapasiteye ulaştığını, ve eski karakterler görünür şekilde kopyalanarak büyüdüğünü izleyin.
Konuşma notu: initCap=1, 10 harf için en çok büyümeyi zorlar — katlama kuralının iyi bir stres testi.
Konuşma notu: C'de, realloc bloğu TAŞIYABİLİR — buf'a eski her işaretçi, bu satır çalıştığı an geçersiz olur.
Konuşma notu: "Amorti edilmiş" demek: her tek işlem ucuz değil, ama uzun bir dizi üzerinde ORTALAMA ucuz demektir.
Konuşma notu: Sabit bir büyüme miktarı, "küçük girdilerde iyi görünür, ölçekte çöker" türünde klasik bir hatadır.
Konuşma notu: Öğrencilerden "kaç büyüme olur, ve her biri ne kadara mal olur" açısından düşünmelerini isteyin.
Konuşma notu: Azalarak her biri n'e kadar mal olan log(n) büyüme O(n)'e toplanır; her biri n'e kadar mal olan n/10 büyüme O(n^2)'ye toplanır.
Konuşma notu: Bölüm 3, hiç kullandığınız her otomatik tamamlama kutusunun ve yazım denetleyicisinin arkasındaki yapıyı, trie'yi tanıtıyor.
Konuşma notu: Hash'leme, benzer anahtarları bilerek dağıtır — bu yüzden bir "ile başlıyor" sorusunu hiç yanıtlayamaz.
Konuşma notu: Altmış beş yaşında ve hâlâ herhangi bir mülakatçının "otomatik tamamlama tasarla" için beklediği ilk fikir.
Konuşma notu: Bayrak önemli — bir çatal, aynı anda hem bir sözcüğün yolunda hem de daha kısa bir sözcüğün sonu olabilir.
Konuşma notu: Bu ikili rol — sözcük-sonu VE çocuklu-olma — trie hatalarının en yaygın tek kaynağıdır.
Konuşma notu: 10 sözcüklü bir trie ile 10 milyon sözcüklü bir trie, search("CAT")'i tam olarak aynı sayıda adımda yanıtlar.
Konuşma notu: Normal örnek: CAT, CAR, CARD, DOG — paylaşılan kenarların yeniden kullanıldığını, "son" bayrağının sözcük sınırlarında belirdiğini izleyin.
Konuşma notu: A, AB, ABC, ABCD — hiç dallanma yok, düz bir bağlı-liste-benzeri zincir. Bölüm 4'ün tam olarak sıkıştırdığı şey bu.
Konuşma notu: C düğüm başına sabit 26-hücreli bir dizi kullanır; Java sürümü (notlarda) bunun yerine bir HashMap kullanır — gerçek bir ödünleşim.
Konuşma notu: Döngünün sonuna ulaşmak yalnız "bu bir önek" olduğunu kanıtlar — dönüş değeri isEnd'i de kontrol eder.
Konuşma notu: O bellek bedeli, tam olarak bölüm 4'ün sıkıştırılmış trie'sinin düzelttiği şeydir.
Konuşma notu: search("CAR") ve search("CARP"), "CARPET" tutan bir trie'de aynı üç kenarı izler — yalnız biri saklı bir sözcüktür.
Konuşma notu: Öğrencilere 30 saniye verin; birçoğu başta yol var olduğu için true diyecektir.
Konuşma notu: Bu, "sık yapılan hatalar" slaytının az önce uyardığı bulundu-önek ayrımının tam olarak kendisi.
Konuşma notu: Bölüm 4, düz bir trie'nin uzun, dallanmayan sözcüklerdeki bellek israfını düzeltiyor.
Konuşma notu: Prensipte hiç dallanması olmayan tek bir dizgi olabilecek bir şey için on üç düğüm.
Konuşma notu: PATRICIA trie'ler bugün ağ ağlarında hâlâ kullanılıyor — en-uzun-önek-eşleşmesi IP yönlendirmesi doğrudan bir uygulama.
Konuşma notu: Durum 3 — bölme — gerçekten yeni olan tek fikir; diğer iki durum tam olarak düz bir trie'nin mantığı.
Konuşma notu: Animasyonu oynatmadan önce tahtada çalışın — öğrencilerin önce elle görmesi gereken tek adım bu.
Konuşma notu: Bu dersten iki tamamen farklı sıkıştırma fikri — farkı açıkça adlandırmaya değer.
Konuşma notu: Normal örnek: TEST, TEA, TEAM — TEST kenarının TE + ST'ye bölündüğünü, sonra TEAM'in A düğümünün ötesine uzandığını izleyin.
Konuşma notu: ANT, ARM, ART, AXE — bir bölmenin içinde bir bölme, bu yapının doğru işlemesi gereken en zor durum.
Konuşma notu: Tam split_edge mantığı (eski etiketi kısaltmak, çocuğu yeniden anahtarlamak) notlarda — bu karar noktası.
Konuşma notu: Süre karmaşıklığı değişmez; yalnız bellekteki sabit çarpan iyileşir, bazen çarpıcı biçimde.
Konuşma notu: Yeniden anahtarlama hatası inceliklidir — çocuğun harita/dizi anahtarı, kısaltılmış etiketinin yeni ilk harfiyle eşleşmelidir.
Konuşma notu: Açıklamadan önce öğrencilerin akıl yürütmesine izin verin — "hiç paylaşılan önek yok" olası en basit durumdur.
Konuşma notu: Aynı iki sözcük için 5 + 6 = 11 düğüme ihtiyaç duyacak düz bir trie'yle karşılaştırın.
Konuşma notu: Bölüm 5 farklı bir soru yanıtlıyor: "X saklı bir sözcük mü?" değil, "P örüntüsü uzun bir T metninin herhangi bir yerinde geçiyor mu?"
Konuşma notu: Bu, bir metin düzenleyicinin "bul" özelliğinin, ya da bir genom tarayıcısının sürekli sorduğu bir sorudur.
Konuşma notu: "Her zaman uzunlukta farklı", daha uzun bir soneğin öneki olan daha kısa bir soneğin otomatik olarak önce sıralanmasının nedeni.
Konuşma notu: Normal örnek: MISSISSIPPI — her soneğin, kendi satırı olarak, ekleme sıralamasıyla sıralı konumuna kaydığını izleyin.
Konuşma notu: AAAAAAAAAA — her karşılaştırma daha kısa soneğin sonuna kadar çalışır; yalnız uzunluk kuralı her bağı çözer.
Konuşma notu: "Akıllı işaretçi kullanımı, O(n) ekstra bellek ve kopyalamadan kaçınır"ın güzel, somut bir örneği.
Konuşma notu: Kurma maliyeti BİR KEZ ödenir; aynı metne karşı sonraki her arama hızlıdır.
Konuşma notu: `sa[i]` bir başlangıç KONUMUDUR, soneğin bir kopyası değil — soneği yazdırmak `text + sa[i]`'ye ihtiyaç duyar.
Konuşma notu: Bu, bir bitiş işaretini karşılaştırma kuralı için gereksiz kılan kilit gerçektir.
Konuşma notu: Farklı uzunluklar, düz sözlük karşılaştırmasının zaten her olası bağı doğru çözdüğü anlamına gelir.
Konuşma notu: Bölüm 6, arama ailesini açıyor — aynı soruyu yanıtlayan beş farklı hileli algoritma.
Konuşma notu: "En basit olası" saf aramadır — henüz daha akıllı bir fikir öğretilmemiş olsaydı tam olarak başlayacağınız yer.
Konuşma notu: "Bir eşleşmeden sonra devam edin", en çok unutulan kural — yaygın bir hata bir isabetten sonra m konum atlar.
Konuşma notu: Normal örnek: text="ABABAABABC", pattern="ABABC" — 5. kaydırmadaki gerçek eşleşmeden önce birkaç yanlış başlangıcı izleyin.
Konuşma notu: text="AAAAAAAAAA", pattern="AAAB" — SON karakterde başarısız olmadan önce her kaydırma örüntünün neredeyse tamamını karşılaştırır.
Konuşma notu: Buradan Bölüm 11'e kadarki her algoritma, bir anlamda, bu çift döngünün en kötü durumundan kaçınmanın daha akıllı bir yoludur.
Konuşma notu: Saf aramanın en kötü durumunu dersin geri kalanının kötü adamı olarak çerçeveleyin — her sonraki algoritma "düzeltme"dir.
Konuşma notu: En kötü durum karmaşıklığı tek dikkat edilecek şey değildir — küçük girdiler saf aramanın küçük sabit çarpanını tercih eder.
Konuşma notu: 60 saniye verin — birçoğu bağımsız olarak zor örnekte gösterilen "AAAA...B" örüntüsünü yeniden keşfedecek.
Konuşma notu: Bu tam olarak iki slayt önce gösterilen zor senaryo animasyonu.
Konuşma notu: Bölüm 7, Bölüm 8'in kullandığı tabloyu kuruyor — bir KMP dersinin anlamlı olması için iki yarısına da ihtiyaç var.
Konuşma notu: Kilit içgörü: örüntü, arayacağı metinden bağımsız olarak, önceden BİR KEZ incelenebilir.
Konuşma notu: Dizgi algoritmalarında en çok alıntılanan makalelerden biri — çoğu derste saf aramadan sonra öğretilen ilk şey.
Konuşma notu: Tahtada "ABAB" -> lps=2'yi çalışın; bir dakikadan az sürede elle yapılacak kadar kısa.
Konuşma notu: Normal örnek: ABABCABABA — len'in bir eşleşmede büyüdüğünü, bir uyuşmazlıkta lps[len-1] üzerinden (asla doğrudan 0'a değil) geri düştüğünü izleyin.
Konuşma notu: AABAACAABAA — bir uyuşmazlık birden fazla lps düzeyi üzerinden geri düşer, doğrudan 0'a değil.
Konuşma notu: "else if (len != 0)" dalı — sıfırlamak yerine geri düşmek — öğrencilerin ilk yanlış yaptığı SATIR.
Konuşma notu: Bu amorti edilmiş argüman (yalnız arttığı kadar azalan bir değer), dizgi algoritmalarında sürekli tekrar eder.
Konuşma notu: 0'a sıfırlamak yine de BİR tablo üretir — yalnız YANLIŞ olanı, güvenli atlama mesafesini eksik bildiren bir tablo.
Konuşma notu: Bu, tablonun son girdisini örüntünün bütün olarak kendi örtüşmesine bağlar.
Konuşma notu: "AAAAAAAAAA"'nın lps[m-1] = m-1'i vardır, olası maksimum kendisiyle örtüşme.
Konuşma notu: Bölüm 8, lps tablosunun karşılığını verdiği yer — bölüm 7'nin kurulumunun ödül dizisi.
Konuşma notu: "Asla geri gitmez", KMP'ye O(n+m) sınırını veren tek garanti — birden fazla söyleyin.
Konuşma notu: Bir geri düşüşte "i yerinde kalır" kilit satır — metin karakteri asla yeniden incelenmez.
Konuşma notu: Normal örnek: klasik CLRS tarzı metin/örüntü çifti — i'nin ileri yürürken j'nin lps kullanarak atladığını izleyin.
Konuşma notu: text="AAAAAAAAAAAAAAAB", pattern="AAAAB" — yoğun bir geri düşüş dizisi, ama i hâlâ yalnız ileri gider.
Konuşma notu: Üç dal, "fikir" slaytındaki her durum için bir tane — öğrencilerle 1:1 eşleştirin, sonra devam edin.
Konuşma notu: "Kötü girdi yok"u yinelemeye değer — KMP'yi kötüleştiren hiçbir yapılandırma ya da girdi yoktur.
Konuşma notu: Eşleşme sonrası geri düşüşü unutmak, çakışan oluşumları sessizce kaçırır — sessiz, fark edilmesi zor bir hata.
Konuşma notu: Cevap, doğrudan saf aramanın "metin karakterlerini yeniden inceliyor" kök nedenine bağlanmalı.
Konuşma notu: Bu slayt tüm KMP yayının ödülü — yavaşça söyleyin, hatırlanmaya değer tek cümle bu.
Konuşma notu: Bölüm 9, hash'lemeyi (Hafta 6) gerçekten yeni, artımlı bir biçimde geri getiriyor.
Konuşma notu: Bu KMP'ninkinden tamamen farklı bir strateji — karşılaştırmayı eniyilemek yerine karşılaştırmadan kaçınmak.
Konuşma notu: "Aday, asla bir kesinlik değil" bu bölümdeki en önemli tek cümle.
Konuşma notu: "Doğrulanmalı"yı tekrar söyleyin. İki farklı alt-dizgi aynı değere hash'lenebilir; bu bir hata değil, matematik.
Konuşma notu: Normal örnek: mod=101, hiç sahte isabet yok — kayan özet güncellemesinin, O(1), çoğu pencereyi tamamen atladığını izleyin.
Konuşma notu: mod=7 (bilerek küçük) — doğrulamada BAŞARISIZ olan bir özet eşleşmesi: doğru şekilde reddedilen bir sahte isabet.
Konuşma notu: Gerçek bir öğretim anı — C'de `long`'un 64 bit anlamına geldiğini asla varsaymayın; genişliği platforma bağlıdır.
Konuşma notu: `strncmp`'i işaret edin — o çağrı isteğe bağlı değil; atlamak sessizce sahte isabetleri gerçek eşleşme olarak bildirir.
Konuşma notu: "Zor" örneği, bu en kötü durum davranışını bilerek görünür kılmak için mod=7 kullandı.
Konuşma notu: Bu üçü tam olarak bu bölümün animasyonunun ve programının bilerek gösterdiği üç şeyle eşleşir.
Konuşma notu: Güvercin yuvası ilkesi tam matematiksel cevaptır, açıkça adlandırmaya değer.
Konuşma notu: Öğrencilerin de almış olabileceği bir ayrık matematik dersine güzel bir geri gönderim.
Konuşma notu: Bölüm 10, pratikte sıkça doğal dil metni için en hızlısı olan algoritmayı tanıtıyor.
Konuşma notu: Bu ilk bakışta tersmiş gibi görünüyor — bu yüzden fikri açıklamadan önce durmaya değer.
Konuşma notu: İyi sonek kuralının var olduğunu ama kapsam dışı olduğunu belirtin — öğrenciler daha sonraki okuma için adını bilmeli.
Konuşma notu: "Asla 1'den az" gerçek bir uygulama tuzağı — tekrarlı karakterler saf atlama formülünü 0'a götürebilir.
Konuşma notu: Normal örnek: text="ABAAABCDAB", pattern="ABC" — sağdan sola taramayı ve ortaya çıkan atlama boyutunu izleyin.
Konuşma notu: text="ZZZZZZZZZZ", pattern="ABC" — Z örüntüde hiç geçmez, böylece her pencere tam örüntü uzunluğunca atlar.
Konuşma notu: Tablo yalnız örüntüden BİR KEZ kurulur — tam olarak KMP'nin lps tablosu gibi, her pencerede değişmeden yeniden kullanılır.
Konuşma notu: "Pratikte"yi vurgulayın — gerçek metinde ortalama durum, bu algoritmanın ününü yapan şeydir.
Konuşma notu: Yanlışlıkla soldan sağa karşılaştırmak yine de doğru eşleşmeler bulur — yalnız Boyer-Moore'un tüm amacını atar.
Konuşma notu: Cevap, oradaki karakterlere hiç bakmadan bir konum aralığının eşleşemeyeceğini KANITLAMAKla ilgili.
Konuşma notu: Bu "kanıtla, kontrol etme" fikri, bu hafta saf aramadan daha hızlı her algoritmanın kavramsal kalbidir.
Konuşma notu: Bölüm 11, arama ailesini beşin en kavramsal olarak zarif olanıyla kapatıyor.
Konuşma notu: Bunu "zarif olan" diye çerçeveleyin — öğrenciler sıkça Z algoritmasını beşinin en tatmin edicisi buluyor.
Konuşma notu: [l, r) penceresi, KMP'nin lps tablosuyla tam olarak aynı rolü oynar — "zaten bildiğini hatırla".
Konuşma notu: Normal örnek: pattern="AB", text="ABABABABAB" — [l,r) penceresinin büyüdüğünü ve sonraki konumlar için yeniden kullanıldığını izleyin.
Konuşma notu: pattern="AAA", "AAAAAAAAAA"'ya karşı — pencere dizginin tam sonuna kadar büyümeye devam eder, neredeyse her adımda yeniden kullanım.
Konuşma notu: Üç satır, her fikir için bir tane: pencereyi yeniden kullan, mümkünse uzat, büyüdüyse yeni pencereyi hatırla.
Konuşma notu: Öğrencilere bunun dersin aynı "yalnız büyür" amorti edilmiş argümanını üçüncü kez kullanışı olduğunu hatırlatmaya değer.
Konuşma notu: Bir Z değeri, metin kendisi tekrarlıysa meşru olarak m'yi aşabilir — doğru eşleşme testi ==, değil >='dir.
Konuşma notu: Dürüst cevap "kaçınmaz" — Z[], benzer bir rol oynayan TABLONUN KENDİSİDİR.
Konuşma notu: lps[i] yalnız örüntü içindeki örtüşmeyi tanımlar; Z[i] tüm yapıştırılmış dizgiyle örtüşmeyi tanımlar.
Konuşma notu: Ders dinamik programlamaya geçmeden önce kısa bir dur-ve-karşılaştır bölümü.
Konuşma notu: KMP, GARANTİLİ bir en kötü duruma sahip tek algoritmadır — düşmanca girdi bir endişeyse güvenli varsayılan.
Konuşma notu: Bölüm 13, dinamik programlamayı sıfırdan tanıtıyor — bu dersteki hiçbir önceki hafta bunu kapsamadı.
Konuşma notu: Bu üç gerçek dünya örneği, aksi takdirde soyut olan bir soruyu öğrencilerin zaten bildiği şeylere bağlıyor.
Konuşma notu: Saf özyinelemeli çağrı ağacını tahtaya çizin — tekrarlanan alt ağaçlar küçük girdilerde bile görsel olarak açıktır.
Konuşma notu: Her iki özellik de gereklidir — optimal alt yapı özyinelemeyi doğru yapar; çakışma ezberlemeyi değerli kılar.
Konuşma notu: Levenshtein'ın özgün makalesi, "dinamik programlama" adının tam bu bağlamda standart hale gelmesinden öncedir.
Konuşma notu: "Her bağımlılık zaten hesaplanmış", hiç özyinelemeye gerek olmamasının nedeni — tek bir geçiş yeterli.
Konuşma notu: Normal örnek: KITTEN -> SITTING, uzaklık 3 — tablonun dolduğunu, sonra geriye yürümenin bir düzenleme dizisi yeniden kurduğunu izleyin.
Konuşma notu: CAT -> CATERPILLAR — a, b'nin bir öneki, böylece her eşleşmeyen adım saf bir ekleme, asla değiştirme ya da silme değil.
Konuşma notu: Bu tüm algoritmanın çekirdeği — geri kalan her şey (taban durumları, geriye yürüme) bu yineleme etrafında defter tutma.
Konuşma notu: Alan eniyilemesinin var olduğunu belirtin ama sonradan geriye yürümeyi çalıştırma yeteneğinden fedakarlık ettiğini not edin.
Konuşma notu: Taban-durumu hatası sinsidir — "boş bir önekle karşılaştırma"yı, maliyeti olması gerekirken sessizce ücretsiz gösterir.
Konuşma notu: Bu, birkaç slayt önceki "fikir" slaytına doğrudan bağlanır — iyi bir anlama kontrolü.
Konuşma notu: Cevabın her iki yarısı da önemli — birçok öğrenci yalnız iki özellikten birini hatırlıyor.
Konuşma notu: Bölüm 14, bölüm 13'ün tam tablo şeklini tek bir değişmiş yinelemeyle yeniden kullanıyor — güzel bir "aynı şekil, farklı anlam" kapanışı.
Konuşma notu: Bu tam olarak bir fark aracının değişmemiş olarak vurguladığı şey — git diff'e bağlantı burada karşılığını veriyor.
Konuşma notu: Bu ayrım, LCS'yle ilgili en yaygın tek kavramsal hatadır — bu slayta gerçekten zaman ayırın.
Konuşma notu: Açıkça düzenleme uzaklığının min+1'iyle karşılaştırın — bu karşıtlık bu bölümün temel öğretim noktasıdır.
Konuşma notu: Normal örnek: ABCBDAB / BDCABA, uzunluk 4 — köşegenin eşleşmelerde büyüdüğünü, aksi halde max'ın ileriye taşındığını izleyin.
Konuşma notu: ABCDE'ye karşı FGHIJ — her hücre 0 kalır, tüm tablo yalnız "eşleşme yok, max taşı" dalıyla dolar.
Konuşma notu: Bunu düzenleme uzaklığının kod slaydıyla yan yana karşılaştırın — görsel benzerlik bilerek yapıldı ve öğreticidir.
Konuşma notu: Bu, açıkça şunu söyleme anı: "artık DP tablo şeklini biliyorsunuz, yalnız iki ayrık algoritmayı değil."
Konuşma notu: Gerçek karakterleri geri kazanmak için geriye yürüme gerekir — yalnız dp[n][m] yalnız "ne kadar uzun?"u yanıtlar.
Konuşma notu: Dersin kapanış kavramsal sorusu — bölüm 13 ve 14'ü açıkça birbirine bağlıyor.
Konuşma notu: Bu, bugünkü dersin tüm DP yarısının en temiz tek cümlelik özeti.
Konuşma notu: Beş yapı, beş arama algoritması, iki DP algoritması — on üç animasyon, bir ders.
Konuşma notu: Öğrencileri programları gerçekten çalıştırmaya teşvik edin — tüm ders boyunca gösterilen her çıktı gerçekti, uydurulmadı.
Konuşma notu: Dinamik programlama, bu haftanın çalışmalarınızın geri kalanında sürekli yeniden ortaya çıkacak tek fikridir.
Konuşma notu: Dergi adları, ciltler, ve yıllarla tam alıntılar basılı notların Kaynaklar bölümünde.
Konuşma notu: Sınıfa teşekkür edin, kodun ve notların nerede olduğunu hatırlatın, ve söz hakkını açın.