Sto lavorando alla diffusione di file binari di grandi dimensioni. Ho implementato il celebre algoritmo Myers Diff, che produce una diff minima. Tuttavia, è O (ND), quindi per diff due molto diversi file da 1 MB, mi aspetto di prendere tempo 1 milione quadrato = 1 trilione. Questo non è buono!Diffusione più veloce
Quello che mi piacerebbe è un algoritmo che produce un diff potenzialmente non minimale, ma lo fa molto più velocemente. So che uno deve esistere, perché Beyond Compare lo fa. Ma non so come!
Per essere sicuri: ci sono strumenti come xdelta o bdiff, ma questi producono una patch destinata al consumo del computer, che è diverso da un diff consumabile dall'uomo. Una patch riguarda la trasformazione di un file in un altro, quindi può fare cose come copiare da parti precedenti del file. Un diff umano consumabile è lì per mostrare visivamente le differenze e può solo inserire ed eliminare. Ad esempio, questa trasformazione:
"puddi" -> "puddipuddipuddi"
produrrebbe una piccola macchia di "copia [0,4] a [5,9] e [10, 14]", ma una differenza maggiore di "append 'puddipuddi'". Sono interessato ad algoritmi che producono il diff più grande.
Grazie!
Questa è un'informazione molto utile! Il sequenziamento del DNA sembra voler lottare con questo problema, quindi analizzerò le tecniche da questo. Grazie! – fish
@fish: prego :) –