DT
D é n e s T a m á s matematikus TD
email:
titoktan@freemail.hu
Egy adott jelkészletből (nevezzük ABC-nek)
előállított jelsorozatok tulajdonságainak vizsgálatához bemutatunk egy
matematikai modellezési eszközt (ezek a
gráfbeli pályák), amellyel az úgynevezett strukturális összehasonlítások is
könnyen elvégezhetők. Mint látni fogjuk
a gráf modell nem csak szemléletesen és áttekinthetően képezi le a
problémákat, hanem nagyon hatékony, gyors algoritmust is szolgáltat a
gyakorlati megoldáshoz.
Az információ-dömping világában már nem csupán
elméleti, hanem kulcsfontosságú gyakorlati jelentősége van a szövegeket és más
jelsorozatokat tároló, kezelő, rendszerező informatikai rendszerekben
(szövegszerkesztő, kulcsszó szerinti keresés, kriptológia, stb.) annak, hogy
milyen hatékonysággal tudjuk leírni, összehasonlítani a jelsorozatokat. Az
információs rendszereken túli érdekes alkalmazások merülnek fel a
folyamat-elemzés, vagy akár a genetika területén is.
Jelen dolgozat ismerteti a jelsorozatok (tágabban:
szekvenciális rendszerek) gráfmodelljét, majd a gráfbeli pályák egy
probléma-hierarchiáját, valamint egy igen hatékony algoritmust gráfbeli pályák
összehasonlítására.
1. A gráf modellről
Ebben a részben néhány felhasználásra kerülő
gráfelméleti fogalom definícióját és a kifejtéshez szükséges alapvető tételeket
fogalmazzuk meg.
Egy gráfot a csúcsai (szögpontjai) és élei
halmazával definiálunk, az alábbiak szerint:
1.1. definíció
Legyen P= n elemű halmaz és E[1], ekkor
a =(P,E) rendezett párt
irányított gráfnak nevezzük,
ahol P
a gráf szögpontjainak, E az éleinek halmaza. A továbbiakban csak irányított gráfokról
lesz szó, azaz az E-beli elemek
irányított élek, melyeket a kezdő és végpontjaiból álló rendezett párral adunk
meg.
Ilyen például az 1.ábrán az =(AB) irányított él.
1.2. definíció
A =(P,E) gráfban
az U= E-beli élekből álló élsorozatot pályának nevezzük, ha
mindegyik él végpontja megegyezik az utána következő él kezdőpontjával.
A pálya hossza
a benne levő élek száma. Ezt a továbbiakban egy adott U pálya esetén l(U)-val jelöljük.
Egy pályát megadhatunk a benne foglalt csúcsok
(szögpontok) sorozatával is. Például a
2.ábrabeli U= pályát az U=(ABDC)
formában is megadhatjuk.
Egyszerű
pályának az
olyan pályát nevezzük, amely egyetlen élt sem tartalmaz kétszer.
Elemi pályáról akkor beszélünk, ha az
élekhez tartozó kezdő és végpontok között egyik sem szerepel kétszer. Az elemi
pályát szokás irányított útnak is nevezni.
1.3. definíció
Egy gráfot
összefüggőnek nevezünk, ha bármely két szögpontja között vezet út.
1.4. definíció
Ha egy gráfban két szögpontot több, azonos
irányítású él köt össze, ezeket párhuzamos
éleknek nevezzük.
1.5. definíció
Az olyan élt, amelynek kezdő és végpontja megegyezik
hurokélnek nevezzük.
A továbbiakban minden általunk tárgyalt gráfban
megengedett a párhuzamos és hurokélek létezése. Párhuzamos éleket tartalmazó
gráfok éleinek megkülönböztetésére (bizonyos eltérő tulajdonságok jelzésére)
szokás az élek úgynevezett színezését alkalmazni. Az ilyen gráfot színezett élű gráfnak nevezzük.
Jelöljük egy
=(P,E) irányított
gráf tetszőleges szögpontjának kimenő
fokszámát -vel, bemenő fokszámát
-vel, és definiáljuk az alábbi S halmazt:
(1.1) S=
A gráfbeli pályák kitüntetett szerepére mutat rá az
alábbi 1.1. és 1.2. gráfelméleti tétel
(lásd [2] 52.oldal
3-4., 3-5.tétel), melyeket bizonyítás nélkül közlünk:
1.1. Tétel
Ha =(P,E) irányított,
összefüggő gráf és nem minden szögpontjára
teljesül, hogy , akkor felbontható k darab irányított pályára, ahol
(1.2) k=
Példaként tekintsük a 2.ábrán bemutatott gráfot, ahol P= E= S=
k= = 4
A négy pálya, amelyekre a gráf felbontható:
1.2. Tétel
Ha =(P,E) irányított,
összefüggő gráf, melyben mindegyik p
szögpontra , akkor az E-beli élek egyetlen pályát alkotnak. (például ilyen gráfot kapunk, ha az 1.ábra gráfjában az (AC) élt (CA)-ra változtatjuk)
A jelsorozatok vizsgálatára tehát kézenfekvően adódik a gráf modell, hiszen ha annak az ABC-nek melyből a jelsorozatokat képezzük, megfeleltetjük a gráf P szögponthalmazát és a jelsorozatban az „x betű után következik y” relációnak megfeleltetjük az (xy) irányított élt, így a teljes jelsorozat pontosan egy gráfbeli pálya lesz. Természetesen vonatkozik ez a megfeleltetés bármely jelsorozatra, amely ugyanebből az ABC-ből keletkezik.
2. Gráfbeli pályákkal kapcsolatos problémák
Gráf modellek vizsgálata során, a pályákkal kapcsolatban
három fő problématípust szoktak megkülönböztetni: az elérhetőségi, a pályák leszámlálási és keresési problémákat.
ELÉRHETŐSÉG
A probléma: Létezik-e pálya egy =(P,E) gráf szögpontjai között ?
Ez a problématípus a gráfhoz rendelt úgynevezett
szomszédossági mátrix segítségével jól algoritmizálható módon oldható meg.
2.1. definíció
Adott =(P,E) párhuzamos
éleket nem tartalmazó, n
szögpontú gráfhoz rendelt mátrixot a gráf szomszédossági mátrixának nevezzük, ha
(2.1)
Ha az M mátrixot logikai mátrixként kezeljük, akkor
az (a mátrix k-adik
hatványa) mátrixban szereplő 1-esek éppen azokat a szögpont párokat
jelölik ki, amelyeket k
hosszúságú pálya köt össze.
Képezve tehát az
(2.2) M=
logikai mátrixot ( a logikai összeadást jelöli, r pedig a leghosszabb -beli pálya hosszát), az
M-ben levő 0 elemek pontosan azokat a szögpont párokat
jelölik ki, amelyek között nincs összekötő pálya.
PÁLYÁK LESZÁMLÁLÁSA
A probléma: Az elérhetőségi feladat megoldása csupán arra ad választ, hogy
létezik-e pálya két vizsgált szögpont között.
Sokszor ennél több érdekel, mégpedig az, hogy ha létezik pálya két
szögpont között, akkor hány ilyen van és ezek hogyan oszlanak meg hosszúság
szerint ?
Ez a probléma ugyancsak visszavezethető az adott
gráf szomszédossági mátrixának hatványozására. Itt azonban nem logikai, hanem a
szokásos aritmetikai műveleteket használjuk.
Tekintsük egy adott
n szögpontú =(P,E) gráf M= szomszédossági
mátrixának i-edik sorát és j-edik
oszlopát és tegyük fel, hogy azok k-adik eleme 1-es:
j.oszlop
Az i.sor
a szögpontból kiinduló
élekről, a j.oszlop pedig a szögpontba beérkező
élekről ad felvilágosítást. Tehát
az azt jelenti, hogy
léteznek a és a élek, azaz létezik -ből -be vezető 2 hosszúságú pálya. Így világos, hogy az alábbi formula éppen a -ből -be vezető 2
hosszúságú pályák számát adja:
(2.3)
A gondolatmenet általánosításából adódik, hogy a
szomszédossági mátrix m-edik hatványa éppen az m hosszúságú pályák számát adja meg.
Az m-nél
nem hosszabb pályák számáról az mátrix elemei
tájékoztatnak, amely a következőképpen áll elő:
(2.4)
PÁLYÁK
ÖSSZEHASONLÍTÁSA
A probléma: Tegyük fel, hogy gráfunk
q darab pályára bontható,
azaz q
darab különböző színnel színezett pálya egyesítéseként áll elő. Ekkor a
következő vizsgálati célokat tűzzük ki:
közös
szakaszait.
C2. Határozzuk meg a közös szakaszok egyes pályákon
belüli hosszát és elhelyezkedését.
A C1.
és C2. problémák szemléletesen a
következőt jelentik:
Rajzoljuk rá egy-egy celluloid lemezre (külön-külön)
gráfunk szögpontjait úgy, hogy ezek pontosan fedésbe hozhatók legyenek, ezután
rajzoljuk a lemezekre a gráf egy-egy pályáját (lásd a 3. és 4.ábrát).
3.ábra 4.ábra
8 7 6 5 4 3 2 1 8 7 6 5 4 3 2 1 8 7 6 5 4 3 1 2
5.ábra
Ha most a két lemezt egymásra illesztjük úgy, hogy a
megfelelő számozású szögpontok fedjék egymást
(lásd 5.ábra), akkor az
erősebben kirajzolódó élek pontosan a két pálya közös szakaszait mutatják.
Feladatunk tehát olyan hatékony algoritmus tervezése, amely a „celluloid lapok
egymásra illesztését” elvégzi és megadja az így leolvasható értékes
információkat a közös pályaszakaszokról.
3. A matematikai módszer
3.1.definíció
Legyen =(P,E) irányított
gráf és két gráfbeli pálya. Az üres pályát (olyan
pályát, amely nem tartalmaz élt) a jellel jelöljük.
Első lépésként definiálunk a pályák között egy szorzás műveletet,
melynek segítségével megfogalmazzuk a módszer alapját képező tételt. A műveletet a
következőképpen definiáljuk:
(3.1)
Valamint, ha
U tetszőleges nem üres pálya,
akkor
3.1. Tétel
Legyen =(P,E) irányított
gráf. Bármely -beli pálya -beli elemi pályák szorzatára bontható.
Tekintsünk egy tetszőleges -beli pályát. Ha U
elemi pálya, akkor a tétel állításának eleget tesz, így kész a
bizonyítás.
Ha U nem elemi pálya, akkor a szögpont sorozatban
van legalább egy olyan szögpont, amely legalább kétszer fordul elő és nem
azonos a kezdő, illetve a végponttal.
Legyen balról az első olyan szögpont, amely
másodszor fordul elő
Ekkor tehát elemi pálya, hiszen
minden k-nál kisebb sorszámú szögpont
különböző. Hagyjuk el most U-ból az
részpályát. Speciális eset áll elő, ha j=1
és k=2, ekkor ugyanis egy hurokél, amelyet
tekinthetünk elemi részpályának. Ezután
a fennmaradó , vagy hurokél esetén az
pályával ismételjük
meg a fenti eljárást egészen addig, amíg a fennmaradó részpálya elemi lesz,
vagy üres pálya. Ez minden esetben elérhető,
hiszen az U pálya hossza véges.
Tegyük fel, hogy
m-szer ismételjük a fenti eljárást a kívánt végfeltétel eléréséig. Ekkor
felírhatjuk a következő összefüggést:
(3.2)
Az eljárás biztosítja, hogy mindegyik részpálya,
valamint elemi pálya és végpontja
megegyezik kezdőpontjával,
így (7) szerint a (8)
összefüggés valóban teljesül.
Q.E.D.
3.2. definíció
Egy X= véges halmaz
önmagára történő leképezését n-edfokú permutációnak nevezzük.
Az X halmaz két valódi részhalmaza közötti
kölcsönösen egyértelmű megfeleltetést részleges
permutációnak nevezzük.
A permutációk, illetve részleges permutációk
jelölésére a továbbiakban az úgynevezett leképezéses írásmódot fogjuk
használni.
Például, ha , akkor például permutáció
(A felső sor az ős,
részleges permutáció az alsó a képelemeket
tartalmazza.)
3.2. Tétel
Legyen =(P,E) irányított
gráf. Bármely -beli elemi pálya felírható
P egy részleges
permutációjaként.
Tekintsük az
-beli elemi pályát és legyen az őselemek, illetve képelemek
halmaza rendre a következő:
(3.3)
(3.4)
Az elemi pálya definíciója szerint X=P,
Y=P eset csak egyetlen esetben állna elő, ha
és X=Y,
azaz U egyetlen hurokélből áll, amit az
feltétel kizár.
Tekintsük tehát a következő leképezést:
(3.5)
Könnyű belátni, hogy a (3.5) szerinti leképezés
kölcsönösen egyértelmű.
(3.3), (3.4), (3.5)
pontosan eleget tesz a 8.definíció
feltételeinek, azaz a P
halmaz egy részleges permutációja, melynek leképezéses alakját (3.6)
mutatja. (Az U pálya leképezéses alakját L(U)-val jelöljük.)
(3.6) L(U)=
Q.E.D.
3.3. definíció
Két leképezés
szorzatán
ezek egymás utáni végrehajtását értjük.
A 3.1. és
3.2. tétel alapján kimondhatjuk, hogy
egy =(P,E) irányított
gráfban bármely U pálya felírható P-beli részleges permutációk szorzataként. Azaz
(3.2) alapján:
(3.7)
Mivel a leképezéses alakban az oszlopok (ős-kép
párok) sorrendje felcserélhető,
így megtehetjük, hogy minden pálya leképezéses alakját az ősöknek valamilyen
rögzített (például növekvő indexű) sorrendje szerint írunk fel. Ez a lehetőség
kínálja a pályák összehasonlításának egy algoritmusát, melyet a következőkben
ismertetünk.
4. Az algoritmus
Az előzőkben leírtak alapján minden =(P,E) irányított
gráfbeli U pályához egy =n oszlopból
álló mátrix rendelhető
az alábbi definíció szerint:
4.1. definíció
Tegyük fel, hogy
L(U) a (3.7) alakú
felbontásban k részleges permutációt
tartalmaz, akkor sorainak száma k.
Jelöljük a mátrix i-edik sorának j-edik elemét -vel, ekkor
(4.1) A jelölés azt jelenti,
hogy a őselem képe
Például, ha
, akkor
tehát k=3
és a következő:
Két tetszőleges
gráfbeli pálya közös szakaszait kezdőpont szerint csoportosítjuk (ez a
mátrix alapján kézenfekvően adódik).
Algoritmusunk leírásához jelöljük a két összehasonlítandó pályát U
és U’-vel, a hozzájuk rendelt
leképezés mátrixokat rendre és -vel. A két
pálya szögpontból kiinduló
közös szakaszait az alábbi algoritmussal határozzuk meg:
1. START
2. i=0
3.
i=i+1, j=0
4. Ha akkor menj 24.-re Magyarázat: i:
az mátrix sorindexe
j:
az mátrix sorindexe
k: a 10.definició szerinti érték
5. t=1
6. Ha akkor menj 3.-ra
7. j=j+1
8. Ha akkor menj 3.-ra
9. Ha akkor menj
7.-re
10. s=i, z=j
11. t= a két pálya közös
szakaszának új eleme)
12. Ha akkor menj 16.-ra
13. Ha akkor menj 20.-ra
14. Ha akkor menj 5.-re
15. Menj
11.-re
16. s=s+1
17. Ha akkor menj 5.-re
18. Ha akkor menj 5.-re
19. Menj
13.-ra
20. z=z+1
21. Ha akkor menj 5.-re
22. Ha akkor menj 5.-re
23. Menj
14.-re
24. END
Az algoritmus bármely szögpontból kiinduló
közös szakaszok meghatározására hasonlóan működik, csupán az 5.lépésben
t=r áll.
Érdemes felhívni a figyelmet arra, hogy ez az
algoritmus a két pálya összes közös szakaszát előállítja és az algoritmus
könnyen párhuzamosítható egy megfelelő méretű mátrix memória tárolóval.
Sokkal egyszerűbb a feladat, ha a teljes U’
pályát keressük az U pályában. Ekkor ugyanis U’
első eleme a vizsgálandó kezdőpont és pontosan l(U’) lépésben a kérdés
eldönthető. Lássunk egy szöveges illusztrációt:
U=(versirodalom) a d e
i l m
o r s v
a d e
i l m o
r s v
U’=(dal)
a d e
i l m
o r s v
U’’=(iroda)
A „d”
illetve „i” oszlopból indulva U’-t két lépésben,
U’’-t négy lépésben megtalálja
az algoritmus.
5. MEGJEGYZÉSEK AZ ALGORITMUSRÓL
Tegyük fel, hogy az
összehasonlítandó U és
U’ pályák leképezéses alakja ( L(U), L(U’) ) darab részleges
permutáció szorzataként áll elő, valamint a
szögpontból kiinduló
közös szakaszaik átlagos hossza l.
Ekkor az algoritmus átlagosan
(5.1) N(U,U’)=
számú elem összehasonlítást végez az összes közös
szakasz megtalálásához.
Ugyanezen feltételek mellett például shifteléses
eljárás esetén az összehasonlítások száma
N’(U,U’)= a közös szakaszok
hosszától függetlenül. Mivel (fenti
illusztrációnkban például ), így majdnem mindig
teljesül, hogy .
Érdekes annak a speciális esetnek a vizsgálata,
amikor az egész U’ mintát keressük az U jelsorozatban. Napjaink informatikai rendszereiben ez
kulcsfontosságú és rendkívül gyakori feladat (pl.: kulcs alapján történő
keresés, szövegkiemelés, helyesírás ellenőrzés).
Ebben az esetben ugyanis algoritmusunk szempontjából
lényegtelen értéke, hiszen az
összehasonlításokat csupán az U’ első eleme által meghatározott mátrix
oszloptól kezdve l(U’) lépésben végezzük el és az összehasonlítások
során biztosan eldönthető, hogy U’ része-e
U-nak.
Ugyanez a feladat az ismert Knuth-Morris-Pratt algoritmussal kb.
2(l(U)+l(U’)-2) összehasonlítást igényel
(lásd [5]).
IRODALOM
[1] C. Berge:
Graphs and Hypergraphs
North-Holland Publishing Company, 1973.
[2] Busacker, R.G.-Saaty, T.L.: Véges gráfok és hálózatok
Műszaki
Könyvkiadó, Budapest, 1969.
[3] Dénes, T.:
Signal series as sequential systems
III. Hungarian Computer Science
Conference, Budapest 1981.
[4] Farrar, J.C.-Nievergelt, J.-Reingold,
E.M.: Matematikai problémák
megoldásainak
számítógépes
módszerei
Műszaki Könyvkiadó, Bp. 1977.
[5] M.Crochemore, W.Rytter: Text algorithms
Oxford University Press,
1994.
[1] A x jelölés a halmazok Descartes szorzatát jelöli. Ez egy olyan halmaz, amely tartalmazza a x jel két oldalán szereplő halmazok elemeiből képezhető összes elempárokat.