Sissejuhatus funktsionaalsetesse sÔltuvustesse

Selles artiklis arutame funktsionaalsete sÔltuvuste olemust, rakendusvaldkondi ja olemasolevaid algoritme nende tuvastamiseks andmebaasides.

KĂ€sitleme funktsionaalset sĂ”ltuvust suhteliste andmebaaside kontekstis. Üksikasjalikult öeldes salvestatakse sellistes andmebaasides teave tabelite kujul. Edasi kasutame ligikaudseid mĂ”isteid, mis ei ole rangelt vastastikku asendatavad, nagu nimetame ise tabelit suhteliseks, veerge atribuuttideks (nende kogum on skeem) ning rida vÀÀrtuste kogumit teatud atribuutide alamhulgas - kordu.

Sissejuhatus funktsionaalsetesse sÔltuvustesse

NĂ€iteks ĂŒlaltoodud tabelis, (Benson, M, M organ) on kordu atribuutide suhtes (Patsient, Soov, Arst).
TÀpsemalt vÀljendatakse seda jÀrgmisel kujul: Sissejuhatus funktsionaalsetesse sÔltuvustesse[Patsient, Soov, Arst] = (Benson, M, M organ).
NĂŒĂŒd saame tutvustada funktsionaalsete sĂ”ltuvuste (ЀЗ) mĂ”istet:

MÀÀratlus 1. Suhe R rahuldab funktsionaalset sĂ”ltuvust X → Y (kus X, Y ⊆ R) siis ja ainult siis, kui iga kordu puhul Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse, Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse ∈ R kehtib: kui Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse[X] = Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse[X], siis Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse[Y ] = Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse[Y ]. Sellisel juhul öeldakse, et X (determinant vĂ”i mÀÀratlev atribuutide hulk) mÀÀratleb funktsionaalselt Y (sĂ”ltuv atribuutide hulk).

TeisisĂ”nu, FZ olemasolu X → Y tĂ€hendab, et kui meil on kaks tuple R ja need kattuvad atribuutidega X, siis nad kattuvad ka atribuutidega Y.
NĂŒĂŒd, jĂ€rjestikku. Vaatleme atribuutide Patsient ja Sugu mille jaoks tahame teada, kas nende vahel on sĂ”ltuvusi vĂ”i mitte. Sellise atribuutide hulga jaoks vĂ”ivad eksisteerida jĂ€rgmised sĂ”ltuvused:

  1. Patsient → Sugu
  2. Sugu → Patsient

Ülaltoodud mÀÀratlemise kohaselt peab esimese sĂ”ltuvuse sĂ€ilitamiseks iga unikaalne vÀÀrtus veerus Patsient olema seotud ainult ĂŒhe vÀÀrtusega veerus Sugu. Ja nĂ€idistabeli jaoks on see tĂ”esti nii. Kuid vastupidi see ei toimi, st teine sĂ”ltuvus ei kehti ning atribuut Sugu ei ole determinant Patsiendi. Sarnaselt, kui vĂ”tta sĂ”ltuvus Doktor → Patsient, vĂ”ib mĂ€rgata, et see rikutakse, kuna vÀÀrtus Robin antud atribuudil on mitu erinevat vÀÀrtust — Ellis ja Graham.

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Seega vĂ”imaldavad funktsionaalsed sĂ”ltuvused mÀÀratleda olemasolevad seosed tabeli atribuutide kogumite vahel. Edaspidi uurime kĂ”ige huvitavamaid seoseid, nimelt neid, X → Y, mis on:

  • ei ole triviaalne, ehk parempoolne osa sĂ”ltuvusest ei ole vasakpoolse alamhulk (Y ̞⊆ X);
  • minimaalsed, st ei ole sellist sĂ”ltuvust Z → Y, et Z ⊂ X.

Kuni praeguseni kĂ€sitletud sĂ”ltuvused olid ranged, st ei lubanud tabelis mingeid rikkumisi, kuid nende kĂ”rval on ka selliseid, mis lubavad teatud jĂ€rjendite vÀÀrtuste vahel mĂ”ningast ebakĂ”la. Sellised sĂ”ltuvused jagunevad eraldi klassiks, neid nimetatakse ligikaudseteks ja nende rikkumist lubatakse teatud arvu jĂ€rjendite pĂ”hjal. See arv reguleeritakse maksimaalse vea nĂ€itajaga emax. NĂ€iteks veamÀÀr Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse = 0.01 vĂ”ib tĂ€hendada, et sĂ”ltuvuse rikkumine vĂ”ib esineda 1% olemasolevatest tupikutest arvestatavas atribuutide kogumis. Seega, 1000 kirje puhul vĂ”ivad maksimaalselt 10 tupikut rikkuda seadust. Meie vaatleme natuke teistsugust mÔÔdikut, mis pĂ”hineb vĂ”rreldavate tupikute paarilistest vÀÀrtustest. SĂ”ltuvuse jaoks X → Y suhtes r arvutatakse jĂ€rgmiselt:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Arvutame vea Doktor → Patsient ĂŒlaltoodud nĂ€ite puhul. Meil on kaks tupikut, mille vÀÀrtused erinevad atribuudi Patsient, kuid kattuvad Doktor: Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse[Doktor, Patsient] = (Robin, Ellis) ja Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse[Doktor, Patsient] = (Robin, Graham). JĂ€rgides veamÀÀratlust, peame arvestama kĂ”iki konfliktseid paare, seega on neid kaks: (Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse, Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse) ja nende inverseerimine (Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse, Sissejuhatus funktsionaalsetesse sĂ”ltuvustesse). Asendame valemisse ja saame:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Ja nĂŒĂŒd pĂŒĂŒame vastata kĂŒsimusele: «Miks see kĂ”ik vajalik on?». Tegelikult on sĂ”ltuvusi erinevaid. Esimene tĂŒĂŒp — need on sĂ”ltuvused, mis mÀÀratakse administraatori poolt andmebaasi projekteerimise etapis. Neid on tavaliselt vĂ€he, need on rangelt mÀÀratletud, ja nende peamine rakendus on andmete normaliseerimine ja suhte skeemi kujundamine.

Teine tĂŒĂŒp on sĂ”ltuvused, mis esindavad "peidetud" andmeid ja varasemaid teadmata seoseid atribuutide vahel. See tĂ€hendab, et selliste sĂ”ltuvuste ĂŒle ei mĂ”eldud projekteerimise hetkel ning need avastatakse juba olemasolevates andmekogumites, et seejĂ€rel tuletada mitmete avastatud funktsionaalsete sĂ”ltuvuste pĂ”hjal jĂ€reldusi salvestatud teabe kohta. Just nende sĂ”ltuvustega me tegeleme. Nendega tegeleb terve andmekaevanduse valdkond, kasutades erinevaid otsingutehnikaid ja nende pĂ”hjal vĂ€ljatöötatud algoritme. Vaatame nĂŒĂŒd, kuidas vĂ”ivad leitud funktsionaalsed sĂ”ltuvused (tĂ€psed vĂ”i ligikaudsed) olla kasulikud mingites andmetes.

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Praegu on sĂ”ltuvuste peamisteks rakendusvaldkondadeks andmete puhastamine. See hĂ”lmab „mustade andmete” avastamise protsesside vĂ€ljatöötamist, millele jĂ€rgneb nende parandamine. TĂŒĂŒpilised nĂ€ited „mustadest andmetest” on dubleerimised, andmevead vĂ”i trĂŒkivead, puuduolevad vÀÀrtused, aegunud andmed, liigsuured tĂŒhikud jne.

Andmevea nÀide:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Andmete dubleerimise nÀide:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

NĂ€iteks, meil on tabel ja komplekt nĂ”udeid, mida tuleb tĂ€ita. Andmete puhastamine tĂ€hendab antud juhul andmete muutmist nii, et nĂ”uded oleksid tĂ€idetud. Seejuures peab muudatuste arv olema minimaalne (selle protseduuri jaoks on olemas oma algoritmid, millest me ei hakka kĂ€esolevas artiklis rÀÀkima). Allpool on toodud nĂ€ide sellisest andmete vormindamisest. Vasakul on algne suhe, milles ei tĂ€ideta vajalikke nĂ”udeid (punase vĂ€rviga on esitatud ĂŒhe nĂ”ude rikkumise nĂ€ide). Paremal on uuendatud suhe, kus rohelised lahtrid nĂ€itavad muudetud vÀÀrtusi. PĂ€rast sellise protseduuri lĂ€biviimist vajalikud sĂ”ltuvused on tagatud.

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Teiseks populaarseks rakenduseks on andmebaasi disain. Siin on oluline meelde jĂ€tta normaalsed vormid ja normaliseerimine. Normaliseerimine on protsess, mille kĂ€igus suheldakse seostega vastavalt teatud nĂ”udmiste kogumile, millest igaĂŒht mÀÀratleb omaette normaalsed vormid. Me ei hakka nende erinevate normaalsete vormide nĂ”udeid arutama (seda tehakse algajatele mĂ”eldud andmebaasi Ă”pikutes), vaid mĂ€rgime vaid, et igaĂŒhel neist on oma viis funktsionaalsete sĂ”ltuvuste kontseptsiooni kasutamiseks. LĂ”ppude lĂ”puks on funktsionaalsed sĂ”ltuvused oma olemuselt terviklikkuse piirangud, mida arvestatakse andmebaasi projekteerimisel (selle ĂŒlesande kontekstis nimetatakse funktsionaalseid sĂ”ltuvusi vahel supervĂ”tmeteks).

Vaatleme nende rakendust nelja normaalse vormi puhul alloleval pildil. Kordame, et Boyce-Coddi normaalsed vormid on rangemad kui kolmas vorm, kuid samas vÀhem ranged kui neljas. Viimast me praegu ei arutle, kuna selle mÀÀratlemiseks on vajalik arusaamine mitme vÀÀrtuse sÔltuvusest, mis ei ole selles artiklis meie jaoks huvitav.

Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse

Veel ĂŒks valdkond, kus sĂ”ltuvused on leidnud oma rakenduse, on funktsioonide ruumide mÔÔtmete vĂ€hendamine, nagu nĂ€iteks naiivse Bayesi klassifikaatori ehitamine, oluliste tunnuste eristamine ja regressioonimudeli reparametreerimine. Originaalartiklites nimetatakse seda ĂŒlesanne liigsete tunnuste mÀÀratlemiseks (feature redundancy) ja asjakohaste tunnuste (feature relevancy) leidmiseks, ning selle lahendamine toimub aktiivsete andmebaasikonseptsioonide kasutamisega. Selliste tööde jaoks vĂ”ime öelda, et tĂ€na on nĂ”udlus lahenduste jĂ€rele, mis vĂ”imaldavad kombineerida andmebaasi, analĂŒĂŒsi ja eelnevalt nimetatud optimeerimise probleeme ĂŒhte tööriista.

FZ otsimiseks andmekogus on palju algoritme (n nii kaasaegseid kui ka vĂ€hem moodsaid). Sellised algoritmid vĂ”ib jagada kolme rĂŒhma:

  • Algebraliste vĂ”rgustike lĂ€bimise algoritmid (Lattice traversal algorithms)
  • Algoritmid, mis pĂ”hinevad kokkusobivate vÀÀrtuste leidmisel (Difference- and agree-set algorithms)
  • Algoritmid, mis pĂ”hinevad paariliste vĂ”rdlemiste saavutamisel (Dependency induction algorithms)

Iga algoritmi tĂŒĂŒbi lĂŒhikokkuvĂ”te on esitatud allolevas tabelis:
Sissejuhatus funktsionaalsetesse sÔltuvustesse

Selle klassifikatsiooni kohta saab lugeda rohkem [4]. Allpool on toodud nĂ€ited iga tĂŒĂŒbi algoritmidest:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Praegu ilmuvad uued algoritmid, mis ĂŒhendavad mitmeid lĂ€henemisviise funktsionaalsete sĂ”ltuvuste otsingus. NĂ€iteks sellised algoritmid nagu Pyro [2] ja HyFD [3]. Nende töö analĂŒĂŒsitakse jĂ€rgmistes kĂ€esoleva artikli seerias. Selle artikli raames kĂ€sitleme vaid pĂ”hikontseptsioone ja lemma, mis on vajalikud sĂ”ltuvuste tuvastamistaktikate mĂ”istmiseks.

Alustame lihtsast — difference- ja agree-set, mida kasutatakse teise tĂŒĂŒbi algoritmides. Difference-set koosneb tuplidest, mille vÀÀrtused ei kattu, samas kui agree-set sisaldab tupleid, mille vÀÀrtused kattuvad. Oluline on mĂ€rkida, et selles kontekstis kĂ€sitleme ainult sĂ”ltuvuse vasakut poolt.

Samuti on oluline mÔistet, mille juurde viidatud, algebraline ruum. Kuna paljud kaasaegsed algoritmid toimivad selle mÔistega, peame olema teadlikud, mis see on.

Ette defineerida relva mĂ”istet, on vajalik osaliselt jĂ€rjestatud kogumi (inglise keeles partially ordered set, lĂŒhendatult — poset) mÀÀratlemine.

MÀÀratlus 2. Öeldakse, et kogum S on osaliselt jĂ€rjestatud binaarse suhtega ⩜, kui igasuguste a, b, c ∈ S kehtivad jĂ€rgmised omadused:

  1. Reflektiivsus, st a ⩜ a
  2. AntisĂŒmmeetrilisus, st kui a ⩜ b ja b ⩜ a, siis a = b
  3. Transitiivsus, st kui a ⩜ b ja b ⩜ c, siis a ⩜ c


Seda suhet nimetatakse (mitte range) osalise jĂ€rjestuse suhtes ning kogumit ise — osaliselt jĂ€rjestatud kogumiks. Formaalne tĂ€histus: ⟹S, ⩜⟩.

Lihtsama nĂ€iteks osaliselt jĂ€rjestatud kogumi kohta vĂ”ib tuua kĂ”igi naturaalarvude N kogumi, kus kehtib tavaline jĂ€rjestussuhe ⩜. Pole raske kontrollida, et kĂ”ik vajalikud aksioomid on tĂ€idetud.

Rikkalikum nĂ€ide. Vaatame kĂ”iki alamhulkade kogumit {1, 2, 3}, mis on jĂ€rjestatud sisaldusjĂ€rel ⊆. TĂ”epoolest, see suhe rahuldab kĂ”iki osalise jĂ€rjekorra tingimusi, seega ⟹P ({1, 2, 3}), ⊆⟩ on osaliselt jĂ€rjekordne kogum. Alloleval joonisel on kujutatud selle kogumi struktuuri: kui ĂŒhest elemendist saab noolede kaudu teise elemendini jĂ”uda, siis on nad jĂ€rjekorras.

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Me vajame veel kahte lihtsat mÀÀratlust matemaatika valdkonnast — supremumit (supremum) ja infimumit (inïŹmum).

MÀÀratlus 3. Olgu ⟹S, ⩜⟩ — osaliselt jĂ€rjekordne kogum, A ⊆ S. A ĂŒlemine piir on selline element u ∈ S, et ∀x ∈ S: x ⩜ u. Olgu U — kĂ”igi S ĂŒlemiste piiride kogum. Kui U-s on olemas vĂ€ikseim element, siis nimetatakse seda supremumiks ja sĂŒmboliks on sup A.

Sarnasel viisil mÀÀratletakse tÀpse alumise piiri mÔisted.

MÀÀratlus 4. Olgu ⟹S, ⩜⟩ — osaliselt jĂ€rjekordne kogum, A ⊆ S. A alumine piir on selline element l ∈ S, et ∀x ∈ S: l ⩜ x. Olgu L — kĂ”igi S alumiste piiride kogum. Kui L-s on olemas suurim element, siis nimetatakse seda infimumiks ja sĂŒmboliks on inf A.

Vaatleme nĂ€iteks eespool mainitud osaliselt jĂ€rjendatud hulka ⟹P ({1, 2, 3}), ⊆⟩ ja leidke sellest supreemia ja infimium.

Sissejuhatus funktsionaalsetesse sÔltuvustesse

NĂŒĂŒd saab sĂ”nastada algebrailise vĂ”rgustiku mÀÀratlemise.

MÀÀratlemine 5. Olgu ⟹P, ⩜⟩ — osaliselt jĂ€rjendatud hulk, nii et igal kahel elemendi alamhulgal on tĂ€psed ĂŒlemised ja alumised piirid. Siis nimetatakse P algebrailiseks vĂ”rgustikuks. Samuti kirjutatakse sup{x, y} kui x √ y ja inf {x, y} kui x ∧ y.

Kontrollime, kas meie nĂ€idishulk ⟹P ({1, 2, 3}), ⊆⟩ on vĂ”rgustik. TĂ”epoolest, igasuguste a, b ∈ P ({1, 2, 3}) puhul kehtib a√b = aâˆȘb ja a∧b = a∩b. NĂ€iteks vaatleme gruppe {1, 2} ja {1, 3} ja leiame nende infimiumi ja supreemia. Kui me need ristame, saame hulga {1}, mis on infimium. Supreemia saame aga nende liitmisega — {1, 2, 3}.

FZ avastamise algoritmides on otsinguruum sageli esitatud vĂ”rgustiku kujul, kus ĂŒheelementilised hulgad (loe: otsinguvĂ”rgu esimene tase, kus sĂ”ltuvuste vasak pool koosneb ĂŒhest atribuudist) esindavad iga algse seose attribuuti.
Alguses kĂ€sitletakse sĂ”ltuvusi vormis ∅ → Üksik atribuut. See etapp vĂ”imaldab mÀÀrata, millised atribuudid on peamised vĂ”tmed (selliste atribuutide puhul ei ole determinantide olemasolu, seega vasak pool on tĂŒhi). Edasi liiguvad sellised algoritmid vĂ”rku ĂŒlespoole. Oluline on mĂ€rkida, et vĂ”rku ei pea tingimata tĂ€ielikult lĂ€bima, see tĂ€hendab, et kui edastate soovitud maksimaalse vasaku poole suuruse, siis algoritm ei liigu selle suuruse tasemest kaugemale.

Alloleval joonisel on nĂ€idatud, kuidas saab kasutada algebralist vĂ”rku FZ-i otsingu ĂŒlesandes. Iga serv (X, XY) esindab sĂ”ltuvust X → Y. NĂ€iteks oleme lĂ€binud esimese taseme ja teame, et sĂ”ltuvus hoitakse A → B (kujuta seda ette rohelise ĂŒhendusena tippude vahel A ja B). See tĂ€hendab, et kui liigume vĂ”rku ĂŒlespoole, siis me ei saa enam sĂ”ltuvust kontrollida A, C → B, kuna see ei ole enam minimaalne. Samamoodi ei kontrolliks me seda, kui sĂ”ltuvus oleks hoitud C → B.

Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse

Lisaks kasutavad kĂ”ik kaasaegsed FZ-otsingu algoritmid tavaliselt andmestruktuuri, mida nimetatakse partiitsiooniks (algallikas — stripped partition [1]). Partiitsiooni formaalne mÀÀratlus on jĂ€rgmine:

MÀÀratlemine 6. Olgu X ⊆ R — atribuutide kogum suhtes r. Klaster on kogum r-tuple indeksitest, mille X-i vÀÀrtused on ĂŒhesugused, st c(t) = {i|ti[X] = t[X]}. Partiitsioon on klastrite hulk, vĂ€lja arvatud ĂŒksikpikkuste klastrid:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Lihtsalt öeldes, partiitsioon atribuudile X on loendite kogum, kus iga loend sisaldab ridade numbreid, mille vÀÀrtused on ĂŒhesugused X. Kaasaegses kirjanduses tĂ€histatakse partiitsioone struktuuriga, mida nimetatakse position list index (PLI). Üksikpikkuste klastrid jĂ€etakse PLI tihendamise eesmĂ€rgil vĂ€lja, kuna need on klastrid, mis sisaldavad ainult ĂŒhte kirje numbrit unikaalse vÀÀrtusega, mille mÀÀramine on alati lihtne.

Vaatame nÀidet. Naaseme tagasi sama tabeli juurde, kus on patsiendid, ning koostame partiitsioone Patsient ja Sugu (vasakul on ilmnenud uus veerg, kus on tÀhistatud tabeli ridade numbrid):

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Sellel juhul on veergu puudutav partitsioon vastavalt mÀÀratlemisele Patsient tegelikult tĂŒhi, kuna ĂŒksikud klastrid on partitsioonist vĂ€lja jĂ€etud.

Partitsioone saab saada mitme atribuutide alusel. Selleks on kaks teed: lĂ€bides tabeli, moodustada partitsioon kohe kĂ”ikide vajalike atribuutide alusel, vĂ”i luua see partitsioonide ĂŒhisosa operatsiooni kaudu alamhulga atribuutidest. FZ otsingu algoritmid kasutavad teist varianti.

Lihtsate sĂ”nadega, et nĂ€iteks saada partitsioon veergude alusel ABC, saab vĂ”tta partitsioonid AC ja B (vĂ”i mis tahes muu mitteĂŒhtivad alamhulk) ja ĂŒhisosa nendest luua. Kahe partitsiooni ĂŒhisosa operatsioon eraldab pikimaid klastreid, mis on ĂŒhised mĂ”lemale partitsioonile.

Vaatame nÀidet:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Esimesel juhul saime tĂŒhja partitsiooni. Kui vaadata tabelisse, siis tĂ”epoolest, sama vÀÀrtuste koondumine kahe atribuudiga puudub. Kui me aga muudame tabelit veidi (parem pool), siis saame jĂ€lle mittetĂŒhja ĂŒhisosa. Selle kĂ€igus sisaldavad read 1 ja 2 tĂ”epoolest sama vÀÀrtust attribuutide alusel. Sugu ja Doktor.

Edasi liikudes peame tutvuma sellise mÔiste nagu partitsiooni suurus. Formaalsetes tingimustes:

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Lihtsamalt öeldes on partitsiooni suurus klastrite arv, mis kuulub partitsiooni (me peame meeles, et ĂŒksikute klastrite partitsioonides ei ole!):

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Sissejuhatus funktsionaalsetesse sÔltuvustesse

NĂŒĂŒd saame mÀÀratleda ĂŒhe vĂ”tmelĂŒli, mis antud partitsioonide puhul vĂ”imaldab kindlaks teha, kas sĂ”ltuvus kehtib vĂ”i mitte:

LĂŒli 1. SĂ”ltuvus A, B → C kehtib, kui ja ainult kui

Sissejuhatus funktsionaalsetesse sÔltuvustesse

Vastavalt lĂŒlile on sĂ”ltuvuse kehtivuse mÀÀratlemiseks vajalik jĂ€rgida nelja sammu:

  1. Arvutada sÔltuvuse vasakpoolsuse partitsioon
  2. Arvutada sÔltuvuse parempoolsuse partitsioon
  3. Arvutada esimese ja teise sammu tulemus
  4. VÔrrelda esimese ja kolmanda sammu meetoditega saadud partitsioonide suurusi

Allpool on toodud nĂ€ide, kuidas kontrollida, kas sĂ”ltuvus kehtib antud lĂŒli pĂ”hjal:

Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse
Sissejuhatus funktsionaalsetesse sÔltuvustesse

Selles artiklis kĂ€sitlesime funktsionaalse sĂ”ltuvuse ja ligikaudse funktsionaalse sĂ”ltuvuse mĂ”isted, uurisime, kus neid rakendatakse ning millised otsingualgoritmid funktsionaalsuse leidmiseks olemas on. Samuti kĂ€sitlesime ĂŒksikasjalikult pĂ”himĂ”isted, mis on aktiivselt kasutusel tĂ€napĂ€evastes funktsionaalsuse leidmise algoritmides.

Viidatud kirjandusele:

  1. Huhtala Y. jt. TANE: Efektiivne algoritm funktsionaalsete ja ligikaudsete sĂ”ltuvuste avastamiseks // The computer journal. – 1999. – Vol. 42. – No. 2. – P. 100-111.
  2. Kruse S., Naumann F. Efektiivne ligikaudsete sĂ”ltuvuste avastamine // Proceedings of the VLDB Endowment. – 2018. – Vol. 11. – No. 7. – P. 759-772.
  3. Papenbrock T., Naumann F. HĂŒbriidne lĂ€henemine funktsionaalse sĂ”ltuvuse avastamisele // Proceedings of the 2016 International Conference on Management of Data. – ACM, 2016. – P. 821-833.
  4. Papenbrock T. jt. Funktsionaalse sĂ”ltuvuse avastamine: seitse algoritmi katsehindamine // Proceedings of the VLDB Endowment. – 2015. – Vol. 8. – No. 10. – P. 1082-1093.
  5. Kumar A. jt. Liituda vĂ”i mitte liituda?: Liitudes kaks korda mĂ”tlema enne tunnusvalikut // Proceedings of the 2016 International Conference on Management of Data. – ACM, 2016. – P. 19-34.
  6. Abo Khamis M. jt. Andmebaasis Ă”ppimine haruldaste tensoritega // Proceedings of the 37th ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems. – ACM, 2018. – P. 325-340.
  7. Hellerstein J. M. jt. MADlibi analĂŒĂŒtikateek: vĂ”i MAD oskused, SQL // Proceedings of the VLDB Endowment. – 2012. – Vol. 5. – No. 12. – P. 1700-1711.
  8. Qin C., Rusu F. Spekulatiivsed lĂ€henemised teraskaalaliste jaotatud gradientide allahindamise optimeerimisele // Neljandate andmeanalĂŒĂŒsi töötoad pilves. – ACM, 2015. – Lk 1.
  9. Meng X. jt. Mllib: MasinĂ”pe Apache Sparkis // MasinĂ”ppe uurimisajakiri. – 2016. – Vol 17. – Nr 1. – Lk 1235-1241.

Artikli autorid: Anastasia Birillo, uurija JetBrains Research, CS keskuse ĂŒliĂ”pilane ja Nikita Bobrov, uurija JetBrains Research

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster