<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"><channel>
<title>hierarkkisten tietorakenteiden diff-algoritmi</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/</link>
<description>Recent changes in hierarkkisten tietorakenteiden diff-algoritmi</description>
<item><title>hierarkkisten tietorakenteiden diff-algoritmi</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/hierarkkisten%20tietorakenteiden%20diff-algoritmi</link>
<guid>http://sange.fi/~atehwa/cgi-bin/piki.cgi/#1119876124</guid>
<description>&lt;p&gt;&lt;ins&gt;Ensinnäkin, diff-algoritmi on menetelmä, jolla etsitään kahden 
(enimmäkseen samankaltaisen) asian väliset eroavaisuudet 
(''diff''erences). Unixissa on aina ollut ohjelma nimeltä '''diff''', 
joka vertailee kahta tiedostoa rivi riviltä ja kertoo, mitkä rivit ovat 
toisessa tiedostossa mutta toisesta puuttuvat, mitkä ovat sisällöltään 
erilaiset näissä kahdessa tiedostossa ja niin edelleen.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Rivi-diffiä sanotaan ''lineaariseksi'' diffiksi, koska se 
käsittelee lineaarisia jonoja, nimittäin kahden tiedoston rivien 
jonoja. Yleisempi diff-algoritmi on sellainen, jolla voi käsitellä 
''hierarkkisia'' tietorakenteita. Hierarkkiset tietorakenteet ovat 
tyypillisesti jonoja, jotka voivat sisältää atomeita (eli 
tietotyyppejä, joiden sisäiseen rakenteeseen ei kiinnitetä huomiota) 
tai toisia samantyyppisiä hierarkkisia tietorakenteita. Esimerkiksi 
lista, joka voi sisältää huomautuksia ja toisia listoja, on 
hierarkkinen tietorakenne.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Hierarkkisen diffin olennaisin ongelma on päättää, kun 
tarkasteltavina ovat toisistaan eriävät tietorakenteet, onko muutos 
tietorakenteen ''sisäinen'' vai sen ''ulkopuolinen''. Eli onko kyse 
"periaatteessa samasta" tietorakenteesta, johon on vain tehty 
muutoksia, vai onko kyse siitä, että kyseisestä kohdasta (sen 
sisältävässä tietorakenteessa) on poistettu, lisätty tai vaihdettu 
kokonainen alitietorakenne.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Hierarkkista diff-algoritmia varten on tehty paljon tutkimusta. 
En ole jaksanut perehtyä kunnolla aiheeseen, mutta ainakin täältä 
löytyy jotain: http://diffxml.sourceforge.net/docs/docs.html&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Oma algoritmini yksinkertaisesti vertailee jokaista jonon 1 ja 
jonon 2 elementtiä ja valitsee sen vaihtoehdon (lisäys, poisto tai 
sisäinen muutos), joka tuottaa pienimmän muutosten summan. Muutosten 
määrä määritellään muutettujen atomien ja tyhjien jonojen määrän 
suhteena atomien ja jonojen kokonaismäärään. Nähtävissä täällä: 
http://sange.fi/~atehwa/credit/diff.ss&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;[kategoria: projektit]&lt;/ins&gt;

</description>
<pubDate>Mon, 27 Jun 2005 12:42:04 +0000</pubDate>
</item>

</channel></rss>
