Lompat ke konten

Contoh

Tiap contoh memuat fenomena yang ingin ditunjukkan. Buka salah satu, lalu tekan putar.

  • Suntingan minimal

    Satu baris berubah. D kecil, dan sebagian besar lattice adalah satu snake panjang — inilah kenapa diff cepat pada perubahan nyata.

    Buka di edit graph#p=minimal-edit
  • Sisipan murni

    Tidak ada yang dihapus. Jalur hanya bergerak ke bawah lalu menyusuri diagonal: D sama dengan jumlah baris yang disisipkan.

  • Penghapusan murni

    Cermin dari sisipan murni: jalur hanya bergerak ke kanan. D sama dengan jumlah baris yang dihapus.

  • Transposisi

    Dua blok bertukar tempat. Diff berbasis baris tidak punya konsep "pindah" — hasilnya satu blok dihapus dan disisipkan lagi di tempat baru.

    Buka di edit graph#p=transposition
  • Kurung kurawal salah alamat

    Fungsi baru disisipkan di antara dua fungsi lama. Ada tiga edit script yang sama-sama minimal — telusuri alternatifnya, dan salah satunya mengaitkan kurung kurawal penutup ke fungsi yang salah: inilah diff jelek yang pernah dilihat semua orang. Implementasi di sini kebetulan memilih yang terbaca; mana yang muncul ditentukan oleh tie-breaking, bukan oleh penilaian mana yang lebih masuk akal.

    Buka di edit graph#p=brace-misattribution
  • Saat patience menang

    Satu entri diganti dua entri baru. Ketiga algoritma sepakat D = 5 — sama-sama minimal — tetapi Myers memecahnya jadi dua hunk terpisah karena bebas mencocokkan baris berulang "enabled" dan "replicas" melintasi batas entri. Patience menolak berlabuh pada baris yang muncul lebih dari sekali, jadi ia berlabuh pada baris "- name:" yang unik dan menyatukan perubahan dalam satu blok. Panjang sama, keterbacaan tidak.

    Buka di edit graph#p=patience-wins
  • Kasus terburuk

    Tidak ada satu pun elemen yang sama, jadi D = N + M dan tidak ada diagonal gratis sama sekali. Ini jalur patologis yang sengaja bisa dijangkau: pencarian berjalan di worker dengan step budget, jadi UI tidak pernah membeku.

  • Granularitas karakter

    Masukan yang sama pada tingkat karakter. Elemen yang dibandingkan adalah pilihan, bukan sifat bawaan diff — ganti granularitas dan lattice-nya berubah total.