COMPUTER ENGINEER

← BlogDATA STRUCTURES / ALGORITHMSPython örnek paketi ↓

Mühendislik ve bitirme projeleri · 53 / 53

Bitirme laboratuvarları ve araştırma rotası

Anla → iz sür → uygula → gerekçelendir

2 dk okuma · uygulama için ayrıca zaman ayır

Laboratuvar 1 — Rota motoru: Directed weighted graph dosyasını doğrula. BFS, Dijkstra ve Bellman-Ford'u ayrı contracts ile uygula. Random küçük graflarda Floyd-Warshall oracle kullan. Negatif cycle, disconnected node ve zero-weight edge testleri yaz. Raporun yalnız süre değil hangi algoritmanın neden seçildiğini anlatsın.

Laboratuvar 2 — Metin indeksi: Naive search, KMP ve suffix-array indeksini karşılaştır. Unicode/byte sözleşmesini belirle, overlapping match ve boş pattern testini yaz. Build time, query time, peak memory ve indeks güncelleme politikasını ölç. Aho-Corasick'i çoklu pattern'e ekle; sonuç kümesini oracle ile karşılaştır.

Laboratuvar 3 — Depolama simülatörü: LRU cache, Bloom filter ve consistent placement birleştir. Bloom positive sonucunu source-of-truth'da doğrula; node join/leave ve hot-key trace ekle. Bu bir consensus implementation değildir. İleri aşamada Raft paper'ındaki state machine ve safety kurallarını ayrı modelle.

Değerlendirme dört kanıt ister: doğru output/invariant, gerekçeli complexity, reproducible benchmark ve failure case. MIT/Princeton notlarından proof alıştırmaları, Morin'den implementation, Erickson'dan reduction/design çalış. Makale okurken model, theorem, assumptions, proof ve deneysel sonuçları ayrı yaz. Bu rota “bütün konular bitti” sertifikası değil, üretilebilir mühendislik kanıtı oluşturur.

Adım adım iz sürme

Her lab için seed, input, beklenen sonuç, kullanılan model ve ölçüm ortamını sakla.

Maliyet ve varsayımlar

Performance raporu n, V/E, pattern uzunluğu ve veri dağılımını belirtmeli. Tek örnekten Big-O çıkarma.

Çalıştırılabilir örnek

Python 3 ile çalıştır. Assert küçük bir örneği denetler; genel doğruluk ispatı değildir. Bazı ileri örnekler özellikle küçük model veya referans oracle'dır; tam üretim uygulaması değildir.

Python 3
import random
rng=random.Random(42)
for n in range(20):
    data=[rng.randrange(-100,100) for _ in range(n)]
    result=sorted(data)
    assert all(result[i]<=result[i+1] for i in range(len(result)-1))
    assert sorted(result)==sorted(data)

KAVRADIĞINI KONTROL ET

Sıra sende

Sıralı çıktı kontrolü tek başına sorting correctness için yeterli mi?

Çözümün mantığını göster

Hayır; input multiset korunmalı. [] her zaman sorted'dır ama eleman kaybını gizler.

Bir adım ileri

  1. Örneği değiştirmeden önce girdi sözleşmesini ve invariantı yaz.
  2. Uygun olan boş, sınır, tekrar ve adversarial girdileri ekle. Basit bir oracle ile karşılaştır.
  3. Belirtilen modelde maliyeti çıkar; farklı girdi büyüklüklerini ölç ve farkları gerekçelendir.

Temel kaynaklar ve ders notları

Bu eğitimde özgün anlatım kullanıldı; aşağıdaki kaynaklar ispatlar ve ileri okumalar sunar. Bağlantılar daha geniş ders modülünü kapsayabilir.

MIT 6.006 · Introduction to Algorithms ↗Pat Morin · Open Data Structures ↗Jeff Erickson · Algorithms ↗
İlerlemeden önce alıştırmayı çöz.