Lompat ke konten

Contoh

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

  • Suntingan minimal

    D = 2N 5 · M 5script minimal: 2

    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

    D = 2N 3 · M 5script minimal: 1

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

  • Penghapusan murni

    D = 2N 5 · M 3script minimal: 1

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

  • Transposisi

    D = 6N 6 · M 6script minimal: 2

    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

    D = 4N 7 · M 11script minimal: 3

    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

    D = 5N 10 · M 13script minimal: 13

    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

    D = 80N 40 · M 40script minimal: ≥ 1.000.000

    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

    D = 5N 7 · M 6script minimal: 7

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