TOIMINNALLINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

Samankaltaiset tiedostot
TOIMINNALLINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

TOIMINNALLINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

VAATIMUSMÄÄRITTELY. PROJEKTITYÖ Tik Wclique

VAATIMUSMÄÄRITTELY. PROJEKTITYÖ Tik Wclique

TEKNINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

- painottamattoman graafin solmujen järjestäminen. - painotetun graafin solmujen järjestäminen

TOIMINNALLINEN MÄÄRITTELY MS

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Algoritmit 1. Luento 1 Ti Timo Männikkö

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

TIEDONKULKU. PROJEKTITYÖ Tik Wclique

TEKNINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

Verkon värittämistä hajautetuilla algoritmeilla

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

TEKNINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

811312A Tietorakenteet ja algoritmit I Johdanto

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

6.4. Järjestyssuhteet

811120P Diskreetit rakenteet

VAATIMUSMÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 4)

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Vaatimusmäärittely. Kymenlaakson partiopiirin jäsenrekisteri

Tietorakenteet ja algoritmit - syksy

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Datatähti 2019 loppu

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietotekniikan valintakoe

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

TOIMINNALLINEN MÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Algoritmit 1. Luento 8 Ke Timo Männikkö

Harjoitus 3 ( )

10. Painotetut graafit

Algoritmit 1. Luento 3 Ti Timo Männikkö

TOIMINNALLINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

VAATIMUSMÄÄRITTELY. Polku Versio 1.1. Projektiryhmä

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

811120P Diskreetit rakenteet

Algoritmit 1. Luento 2 Ke Timo Männikkö

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Toiminnallinen määrittely. XLet esimerkkisovellus

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

12. Näppäimistöltä lukeminen 12.1

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

Numeeriset menetelmät

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Algoritmit 1. Luento 9 Ti Timo Männikkö

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmoinnin perusteet Y Python

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Harjoitus 6 (viikko 42)

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

811120P Diskreetit rakenteet

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

T Testiraportti - integraatiotestaus

Ohjelmoinnin perusteet Y Python

Datatähti 2000: alkukilpailun ohjelmointitehtävä

Ohjelmoinnin perusteet Y Python

Harjoitus 3 ( )

Ohjelmiston toteutussuunnitelma

Johdatus verkkoteoriaan 4. luento

Malliratkaisut Demot

Tietojärjestelmän osat

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

TIE Tietorakenteet ja algoritmit 261

Zeon PDF Driver Trial

8.5. Järjestyssuhteet 1 / 19

Visma Business AddOn Tositteiden tuonti. Käsikirja

Harjoitus 3 (viikko 39)

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Ohjelmoinnin perusteet Y Python

Simulaattorin asennus- ja käyttöohje

Julkaiseminen verkossa

Ohjelmoinnin jatkokurssi, kurssikoe

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

VAATIMUSMÄÄRITTELY. Polku Versio 1.2. Projektiryhmä

VAATIMUSMÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.2

Ekvivalenssirelaatio. Määritelmä 2 Joukon A binäärinen relaatio R on ekvivalenssirelaatio, mikäli. Jos R on ekvivalenssirelaatio ja a A, niin joukkoa

Algoritmit 2. Luento 13 Ti Timo Männikkö

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Muuttujien määrittely

Transkriptio:

TOIMINNALLINEN MÄÄRITTELY PROJEKTITYÖ Tik-.115

SISÄLLYSLUETTELO Sisällysluettelo... Versiohistoria... 1. JOHDANTO... 4 1.1 Tarkoitus ja kattavuus... 4 1. Tuote... 4 1. Määritelmät, termit ja lyhenteet... 4 1.4 Viitteet... 5 1.5 Yleiskatsaus dokumenttiin... 5. YLEISKUVAUS....1 Ympäristö.... Toiminta.... Käyttäjät.... TIEDOT JA TIETOKANTA....1 Tietosisältö....1.1 Dimacsin ascii -formaatti....1. Dimacsin binääri- formaatti.... Käyttöintensiteetti... 8. Kapasiteettivaatimukset... 8 4. TOIMINNOT... 8 4.1 Yleistä... 8 4. Järjestelmän toiminnot... 9 4..1 Järjestäminen... 9 4..1.1 Painottamattoman graafin värittäminen... 10 4..1. Painotetun graafin värittäminen... 11 4.. Painottamattoman maksimiklikin koko... 11 4.. Yhden painotetun maksimiklikin laskeminen... 1 4..4 Kaikkien painotettujen maksimiklikkien laskeminen... 1 4..5 Yhden painotetun luokkaa S olevan klikin laskeminen... 1 4.. Kaikkien painotettujen luokkaa S olevien klikkien laskeminen... 1 4.. Yhden painotetun vähintään luokkaa S olevan klikin laskeminen... 1 4..8 Kaikkien painotettujen vähintään luokkaa S olevien klikkien laskeminen... 14 4..9 Painotetun maksimiklikin koko... 14 4..10 Yhden painotetun maksimiklikin laskeminen... 15 4..11 Kaikkien painotettujen maksimiklikkien laskeminen... 15 4..1 Yhden painotetun vähintään luokkaa S olevan klikin laskeminen... 15 4..1 Kaikkien luokkaa S klikkien laskeminen... 15 4..14 Yhden luokkaa S klikin laskeminen vähintään... 15 4..15 Kaikkien vähintään luokkaa S olevien klikkien laskeminen... 1 4..1 n ensimmäinen vaihe: Funktiokutsu... 1 4..1 n toinen vaihe: Komentorivikutsu... 1 5. ULKOISET LIITTYMÄT... 18 5.1 Laitteistoliittymät... 18 5. Ohjelmistoliittymät... 18 5. Tietoliikenneliittymät... 18. MUUT OMINAISUUDET... 18.1 Suorituskyky ja vasteajat... 18. Käytettävyys, toipuminen, turvallisuus, suojaukset... 18. Ylläpidettävyys... 18.4 Siirrettävyys/kannettavuus, yhteensopivuus... 19.5 Operointi... 19. SUUNNITTELURAJOITTEET... 19

.1 Standardit... 19. Laitteistorajoitteet... 19. Ohjelmistorajoitteet... 19.4 Muut rajoitteet... 19 8. JATKOKEHITYSAJATUKSIA... 19 VERSIOHISTORIA Versio Päivämäärä Laatija Kuvaus 0.1 11.1.000 Dufva Proposal 0.1 11.0.001 Dufva First draft 1.0 19.0.001 Dufva Second draft 1.0-1 19.04.001 Dufva Third draft 1.1 0.0.001 Dufva Edited according to comments received from Patric Östergård and Harri Haanpää

TOIMINNALLINEN MÄÄRITTELY 4 (19) 1. JOHDANTO 1.1 Tarkoitus ja kattavuus 1. Tuote Tämä dokumentti määrittelee -ohjelman toiminnalliset ominaisuudet ja on tarkoitettu helpottamaan ohjelman suunnittelua kertomalla kuinka vaatimukset toteutetaan. Toiminnallista määrittelyssä suunnitellaan ja pyritään selventämään ohjelman perusideaa ja ominaisuuksia, mikä helpottaa myöhemmin tehtävää koodausta. Tavoitteena -ohjelmassa on koodata jo olemassa olevalle algoritmille toimiva ympäristö, jolloin algoritmin käyttö helpottuu ja algoritmille voidaan luoda uusia käyttötapoja. Algoritmin perusideana on etsiä annetusta graafista haluttuja ominaisuuksia. Ohjelmasta on olemassa jo alustava prototyyppi, jossa on jo jotain ominaisuuksia painavimman klikin löytämiseksi. Sen voi ladata osoitteesta: http://www.tcs.hut.fi/ ~ pat/wclique.html 1. Määritelmät, termit ja lyhenteet : Projektityön kohde. Ohjelma jonka tarkoituksena on etsiä haluttuja ominaisuuksia annetuista graafeista. Ohjelma kirjoitetaan isolla jos ohjelmasta puhutaan yleisesti tai viitataan projektityön nimeen. Kun varsinainen ohjelma koodataan, puhutaan wcliquesta pienellä alkukirjaimella. Tällöin tarkoitetaan ohjelman käynnistystiedostoa. Graafi: Useissa yhteyksissä tarkastellaan joukkoa solmuja tai tiloja, joista joko on tai ei ole mahdollista siirtyä välittömästi toinen toisiinsa. Tyypillisiä esimerkkejä tällaisista ovat kartta, johon on merkitty kaupunkeja, sekä näiden väliset suorat liikenneyhteydet, tietokoneohjelman kulkua kuvaava vuokaavio ja sukupuut. Graafi, eli verkko G = ( V, E ) muodostuu äärellisistä joukoista V ja E, joista V on ns. solmujen joukko (solmuista käytetään myös joissain yhteyksissä nimityksiä kärki tai piste), ja E on sivujen joukko (käytössä myös nimitykset kaari ja haara). Algoritmi: Algoritmilla voidaan ratkaista olemassa olevasta graafista asioita, joista ollaan kiinnostuneita. Algoritmi jonka ympärille ohjelma rakennetaan on julkinen. Algoritmin toimintaa on kuvattu Internetissä seuraavissa dokumenteissa: "A Fast Algorithm for the Maximum Clique Problem" http://www.tcs.hut.fi/ ~ pat/paper1.ps "A New Algorithm for the Maximum-Weight Clique Problem" http://www.tcs.hut.fi/ ~ pat/paper.ps Klikki: Klikki tarkoittaa yhteyttä usean solmun välillä Ansi c: Ohjelmointikieli, jolla ohjelma toteutetaan UML: "Unified Modeling Language" on ohjelmistotuotekehityksen standardikuvaamismenetelmä.

TOIMINNALLINEN MÄÄRITTELY 5 (19) 1.4 Viitteet [Vaat] Vaatimusmäärittely 1.5 Yleiskatsaus dokumenttiin Johdanto osuudessa luodaan yleiskatsaus dokumenttiin. Siinä selvitetään termit, lyhenteet ja viitteet jotka auttavat lukijaa tutustumaan tähän dokumenttiin ja -ohjelmaan. Toinen luku kuvaa ohjelmaa yleisellä tasolla. Jos lukija ei ole kiinnostunut pikkutarkasta ohjelman kuvauksesta, niin usein riittää tämän luvun lukeminen ohjelman idean ymmärtämiseksi. Tiedot ja tietokanta osuus kertoo tarvittavien tietokantojen osuudesta tähän projektiin. Työn luonteesta johtuen, tietokannat eivät ole suuressa merkityksessä tämän projektin missään suoritusvaiheessa. Neljännessä luvussa tarkennetaan toisessa luvussa esitettyjä ohjelman ominaisuuksia ja toimintoja. Luku viisi kertoo ulkoisista liittymistä ja toimintaympäristöstä -ohjelmassa. Luvussa kuvataan ei-toiminnallisia ominaisuuksia kuten vaadittua suorituskykyä, siirrettävyyttä ja ylläpidettävyyttä. Luku kertoo ohjelman rajoitteista Viimeisessä luvussa kerrotaan jatkokehityssuunnitelmista.

TOIMINNALLINEN MÄÄRITTELY (19). YLEISKUVAUS.1 Ympäristö. Toiminta ohjelma toimii Linux ja Unix ympäristössä (myöhemmin myös NT ympäristössä). ohjelmalla voidaan laskea graafeista tiettyjä ominaisuuksia kuten maksimigraafin koko. Ohjelmistoa voidaan käyttää upottamalla ohjelma käyttäjän koodiin tai komentorivikomennoilla [vaat]. Syötteenä annettava tieto voi olla Dimacsin binäärisessä tai -ascii muodossa, mikä mahdollistaa graafien hakemisen Internetistä. Tästä on hyötyä myös ohjelman testauksessa, koska näin ohjelman toiminnasta ja suorituskyvystä saadaan tarkempaa tietoa. Tulosteena ohjelma antaa vastauksen siihen kysymykseen mitä käyttäjä kysyi. Alla olevassa Use case -kuvauksessa on esitetty ne kysymykset jota ohjelmalle voi esittää. Kuva 1. Use case kuva vaatimuksista.. Käyttäjät Koska ohjelman lähdekoodi on vapaasti saatavilla, voi ohjelmaa tieteellisessä käytössä käyttää kuka tahansa, ilman rajoituksia.

TOIMINNALLINEN MÄÄRITTELY (19). TIEDOT JA TIETOKANTA.1 Tietosisältö ohjelma voi lukea syötteenä kahta eri formaattia: binääristä ja ascii muotoista Dimacs -formaattia. Tulosteena antaa kokonaislukuja..1.1 Dimacsin ascii -formaatti Dimacsin ascii -formaatti määrittelee syöte- ja tulostiedostojen rivityypit. Kukin rivi alkaa pienellä kirjaimella, joka kertoo rivin merkityksen. Formaatti tukee painotettujen ja painottamattomien graafien esitystä sekä graafin väritystä. Dimacsin ascii -formaatin määrittely on löydettävissä mm. www-sivulta ftp://dimacs.rutgers.edu/pub/challenge/graph/doc/ -hakemistosta ccformat.tex -tiedostosta. Alla on esitetty tärkeimpiä rivityyppejä. Syötetiedostot: Kommenttirivi alkaa pienellä c-kirjaimella: c tämä on kommenttirivi Solmun esitysrivi (Node Descriptor) alkaa pienellä n-kirjaimella, seuraava alkio rivillä on solmun ID (integer 0-n) ja sitä seuraavana solmun paino (integer, voi olla myös negatiivinen). Esim. solmun 1 paino on 5. n 1 5 Kaaren esitysrivi (Edge Descriptor) alkaa pienellä e-kirjaimella, seuraavat alkiot ovat solmujen ID:t. Esim. solmujen 1 ja välillä on kaari. Kukin kaari tarvitsee esittää vain kerran; rivi "e 1" ei alla olevan rivin lisäksi ole tarpeellinen eikä sallittu. e 1 Problem line kertoo graafin solmujen ja kaarien lukumäärän. Alla olevassa esimerkkitapauksessa graafissa on solmua ja 11 kaarta. p edge 11.1. Dimacsin binääri- formaatti Toinen käytettävistä lähdetiedostoformaateista on Dimacsin binääriformaatti. Binääriformaatti on vaihtoehto Dimacsin ascii-formaatille. Mikäli graafin kaarien lukumäärä suhteessa solmujen lukumäärään on keskimäärin 1, prosenttia suurempi, niin graafin binäärinen talletusformaatti on tilaa säästävämpi ratkaisu kuin ascii-talletusformaatti. Binäärinen talletusformaatti käyttää keskimäärin (N^)/1 tavua graafin N solmun ja M kaaren tallentamiseen. Kun taas ascii-formaatti tarvitsee noin M*9 tavua saman graafin tallentamiseen.

TOIMINNALLINEN MÄÄRITTELY 8 (19). Käyttöintensiteetti Ohjelma ei rajoita käyttäjien määrää, jolloin usea käyttäjä voi käyttää ohjelmaa useasta eri paikasta.. Kapasiteettivaatimukset Ohjelma itsessään ei rajoita annettua tehtävää eikä määritä vaadittua minimilaitteistoa. Kiintolevytilaa -ohjelma ei vaadi merkittävästi. Suoritusaika riippuu annetun graafin koosta, pyydetystä tehtävästä sekä laitteiston tehokkuudesta. 4. TOIMINNOT 4.1 Yleistä Ensimmäisessä vaiheessa (funktiokutsu) pyritään muodostamaan tehokas käyttöliittymä vaaditulle algoritmille. Tällöin kuka tahansa käyttäjä voi upottaa koodin omaansa, tai rakentaa jo olemassa olevasta koodista itselleen sopivan liittymän. Tarkemmin tästä on kerrottu kappaleessa 4..9 Toisessa vaiheessa (komentorivikutsu) ohjelmaa pyritään jatkokehittämään niin, että sitä voidaan kutsua komentoriviltä. Tällöin ohjelma käynnistetään -käskyllä jonka perässä ovat parametrit. Parametreilla välitetään tiedot ohjelmalle jotta ohjelma tietää mitä lasketaan ja mitä tietoa käyttäjä haluaa tulosteena itselleen. Tarkemmin parametreista on kerrottu kappaleessa 4..10. Kuva on esitetty ohjelman periaatteellinen toiminta vuokaaviona. Huomioitavaa on että kaikissa tapauksissa graafin solmujen järjestelyä ei suoriteta (riippuu annetun graafin muodosta). Koska eri tapauksien tarkastelu on helpompaa esimerkkien avulla, otetaan malliesimerkiksi graafi joka on esitetty Kuva. Tätä graafia tarkastellaan luvuissa 4..1-4..8. Huomioitavaa tässä kuvassa on se, että painottamattomissa tapauksissa ei huomioida numeroita, painotetuissa tapauksissa ne huomioidaan. Graafin jokainen solmupiste on nimetty numerolla, jonka perässä suluissa on kyseisen solmun painoarvo. Jos solmun indeksi on 4 ja sen painoarvo on, merkintätapa on 4(). Mikäli painoarvo on kaikissa solmuissa 1, ei painoarvoja merkitä ja graafia käsitellään painottamattomana graafina. Vain silloin kun etsitään yhtä maksimikokoista klikkiä, palautetaan samalla klikin koko. Muulloin klikin kokoa ei palauteta.

TOIMINNALLINEN MÄÄRITTELY 9 (19) Aloitus Syöte Järjestä graafi Tulosta Prosessoi Lopetus Kuva. n toiminta vuokaaviona. 1(1) (8) () 4() 5() () (4) 8(5) Kuva. Esimerkkigraafi. 4. Järjestelmän toiminnot 4..1 Järjestäminen Ennen syötteen prosessointia, ohjelma järjestää tarvittaessa graafin uudelleen, käyttäen hyväksi väritys menetelmää. Siinä ideana on että saman klikin jokainen solmupiste nimetään omalla värillään. Eri klikkien solmuilla voi olla samoja värejä. Tätä havainnollistetaan Kuva 4.

TOIMINNALLINEN MÄÄRITTELY 10 (19) Kuva 4. Painottamattoman graafin solmujen värittäminen klikkien perusteella. Kaikki solmut väritetään siten, että naapurisolmut eivät saa olla saman värisiä. Solmut: Värit: a1-an, b1-bn,, m1-mn A, B, C, 4..1.1 Painottamattoman graafin värittäminen Graafin väritys voidaan jakaa seuraaviin vaiheisiin: Väritetään ensimmäinen solmu a1, josta lähtee eniten kaaria on eniten naapureita, värillä A. Etsitään solmu a, jossa on seuraavaksi eniten kaaria, mutta ei ole a1:n naapuri ja väritetään se värillä A. Etsitään solmuja kaarien määrän mukaisessa järjestyksessä an:ään asti ja väritetään ne värillä A. Solmut a1-an eivät saa olla keskenään naapureita. Lopulta yhtään solmua ei enää voi värittää värillä A. Värillä A väritetyt solmut a1-an ja niihin liittyvät kaaret poistetaan. Väritetään jäljellä olevista värittämättömistä solmuista eniten kaaria omaava solmu b1 värillä B. Jatketaan värittämistä kuten edellä kunnes yhtään solmua ei enää voi värittää värillä B.

TOIMINNALLINEN MÄÄRITTELY 11 (19) Poistetaan solmut b1-bn niihin liittyvine kaarineen. Niin kauan kuin solmuja on jäljellä valitaan uusi väri (C, D, ) ja toistetaan edellä mainitut vaiheet. Solmut on nyt saatu järjestykseen: a1, a, a an b1 bn c1 cn m1 mn 4..1. Painotetun graafin värittäminen Tehdään muuten samoin kuin painottamattoman tapauksessa, mutta uutta solmua valittaessa valitaan painoltaan pienin solmu. Jos saman painoisia solmuja on useita, valitaan naapurien painoltaan suurin. 4.. Painottamattoman maksimiklikin koko Haluttaessa tietää graafin ominaisuuksista maksimiklikin koko, tulostaa vastauksena solmujen määrän. Tämä tapahtuu Kuva :n mukaisesti: Ohjelma käy läpi syötteenä annetun graafin, järjestää sen ja palauttaa tulosteena maksimiklikin koon. Esimerkkigraafin tapauksessa, ohjelma palauttaisi maksimiklikin koon eli arvon. Kuva 5:ssa on esitetty maksimi klikki joka voidaan saada esimerkkigraafista. 1 Kuva 5. Maksimi klikki. 8

TOIMINNALLINEN MÄÄRITTELY 1 (19) 4.. Yhden painotetun maksimiklikin laskeminen laskee pyydettäessä maksimiklikin ja tulostaa sen solmupisteet (Kuva ). 1 8 Kuva. Maksimiklikin tuloste. 4..4 Kaikkien painotettujen maksimiklikkien laskeminen laskee pyydettäessä kaikki maksimiklikit, ja tulostaa niiden solmupisteet. Esimerkkitapauksessa tuloste on sama kuin yhden maksimiklikin tapauksessa. 4..5 Yhden painotetun luokkaa S olevan klikin laskeminen tulostaa yhden luokkaa S olevan klikin solmupisteet. Jos S on 4, palauttaa tulosteen: 8 1 4.. Kaikkien painotettujen luokkaa S olevien klikkien laskeminen tulostaa kaikkien niiden klikkien solmupisteet, jotka ovat kooltaan luokkaa S. Jos esimerkkitapauksessamme oletetaan syötteen S arvoksi 4 (parametrimuodossa tämä S vastaa parametria -n?), tulostaa 19 eri solmupistesarjaa. Näin siksi, että graafissa esiintyy 19 kappaletta klikkejä, joiden arvo on 4. Muutama näistä on esitetty Kuva.

TOIMINNALLINEN MÄÄRITTELY 1 (19) 1 1 1 1 variaatio 8 variaatiota (pisteet ja vaihtuvat pisteiksi ja ) 8 variaatiota (pisteet ja -> pisteiksi ja ) 8 variaatiota (pisteet ja -> pisteiksi ja ) 1 5 8 variaatiota (piste -> pisteeksi ) variaatiota (piste -> pisteeksi ) variaatiota (piste -> pisteeksi ) 1 5 variaatiota (piste -> pisteeksi ) variaatiota (piste -> pisteeksi ) 8 variaatiota (piste -> pisteeksi ) Kuva. Esimerkkikuvaajan klikkejä, joissa klikkien määrä on 4. 4.. Yhden painotetun vähintään luokkaa S olevan klikin laskeminen tulostaa solmupisteet yhdestä klikistä, joka on vähintään luokkaa S. Jos S:n arvoksi annettaisiin esimerkkitapauksessamme 5, voisi tuloste näyttää esim. seuraavalta: 1

TOIMINNALLINEN MÄÄRITTELY 14 (19) 4..8 Kaikkien painotettujen vähintään luokkaa S olevien klikkien laskeminen Tässä tapauksessa kertoo niiden kaikkien klikkien solmupisteet, jotka ovat kooltaan luokkaa S tai enemmän. Jos S:n arvoksi annetaan 5, tulisi n palauttaa neljä solmupiste sarjaa. Kuva 8 on osoitettu ne neljä 5:n solmun klikkiä jota esimerkkigraafista löytyy. n antama tuloste on esitetty Kuva 9. 1 1 5 8 8 Kuva 8. Esimerkkikuvaajan klikit, joissa klikkien määrä on 5 tai enemmän. 1 8 1 5 8 Kuva 9. Vähintään luokkaa 5 olevien klikkien tuloste. 4..9 Painotetun maksimiklikin koko Haluttaessa tietää graafin ominaisuuksista maksimiklikin koko, ohjelman laskee ja tulostaa sen painoarvon. Tässä esimerkki ei poikkea paljoa kappaleen 4..1 esimerkistä. Ainoa ero on se että ohjelma palauttaa graafin sen klikin arvon jossa on suurin painoarvo, tässä tapauksessa maksimiklikki on sama kuin kappaleessa 4..1 (Kuva 10), mutta palautettava luku on (suluissa olevien painoarvojen summa). 1(1) (8) () () (4) Kuva 10. Painotettu maksimi klikki. 8(5)

TOIMINNALLINEN MÄÄRITTELY 15 (19) 1 8 Kuva 11. Painotetun maksimiklikin tuloste. 4..10 Yhden painotetun maksimiklikin laskeminen laskee maksimiklikin ja tulostaa sen solmupisteet. Esimerkkitapauksessa tuloste olisi sama kuin Kuva, sillä painoarvo tässä klikissä on suurin. 4..11 Kaikkien painotettujen maksimiklikkien laskeminen laskee kaikki maksimiklikit ja tulostaa niiden solmupisteet. Esimerkkitapauksessa tuloste olisi sama kuin Kuva, sillä painoarvo tässä klikissä on suurin. 4..1 Yhden painotetun vähintään luokkaa S olevan klikin laskeminen tulostaa yhden luokkaa S olevan klikin solmupisteet. Jos S on 0, voi esim. palauttaa tulosteen: 4..1 Kaikkien luokkaa S klikkien laskeminen laskee kaikkien klikkien solmupisteet, jotka ovat kooltaan luokkaa S. Jos pyydetään luokkaa 1 olevien klikkien lukumäärää, palauttaa kolme sarjaa solmupisteitä. Nämä ehdon täyttävät klikit on esitetty Kuva 1. () 1(1) (8) () 5() () (4) (8) () (4) Kuva 1. Luokkaa 1 olevat klikit. 8(5) () 4..14 Yhden luokkaa S klikin laskeminen vähintään tulostaa yhden klikin solmupisteet, jotka ovat kooltaan vähintään luokkaa S. Esimerkki tuloste voisi olla vaikka S:n arvolla 1: 1.

TOIMINNALLINEN MÄÄRITTELY 1 (19) 4..15 Kaikkien vähintään luokkaa S olevien klikkien laskeminen tulostaa kaikkien niiden klikkien solmupisteet, jotka ovat kooltaan vähintään luokkaa S. Jos S:lle annettaisiin tässä tapauksessa syötteenä arvo 1, palauttaisi seitsemän sarjaa solmupisteitä. Nämä seitsemän ehdot täyttävää klikkiä on esitetty Kuva 1 ja n tuloste on esitetty Kuva 11. 1(1) (8) () (8) () 1(1) (8) () 5() (8) () () (4) () (4) () (4) () (4) 8(5) (8) (8) () (8) 8(5) () (4) () 5() () (4) 8(5) 8(5) Kuva 1. Klikit joiden arvo vähintään 1. 1 5 5 1 8 8 8 5 Kuva 14. Tuloste painotetussa tapauksessa: S on vähintään 1.

TOIMINNALLINEN MÄÄRITTELY 1 (19) 4..1 n ensimmäinen vaihe: Funktiokutsu short int wclique (unsigned int nbrofvertices, wc_options *options, unsigned int *edgetbl, unsigned int *weighttbl, char *rescliquetbl, unsigned int *maxclique) NbrOfVertices -parametri määrittää graafin solmujen lukumäärän. Wc_options -parametri määrittää ominaisuuden, jota graafista etsitään. Tietorakenne on kuvattu tarkemmin teknisessä määrittelyssä. EdgeTbl -parametri on osoitin graafin kaaritaulukkoon. Käyttäjän on varattava ja täytettävä muistialue tietorakenteelle ennen funktiokutsua. Kaaritaulukko on kuvattu tarkemmin teknisessä määrittelyssä. WeightTbl -parametri on osoitin graafin solmujen painotaulukkoon. Käyttäjän on varattava ja täytettävä muistialue tietorakenteelle ennen funktiokutsua. Painotaulukko on kuvattu tarkemmin teknisessä määrittelyssä. ResCliqueTbl -parametri on osoitin tulosklikkiin. Käyttäjän on varattava muistialue tietorakenteelle ennen funktiokutsua. Tietorakenne on kuvattu tarkemmin teknisessä määrittelyssä. MaxClique -parametri on osoitin maksimiklikin kokoon, jonka arvona on maksimiklikin koko siinä tapauksessa, että käyttäjä on pyytänyt laskemaan yhden maksimiklikin. Paluuarvona funktion palauttaa true/false tiedon onnistumisesta tai epäonnistumisesta. 4..1 n toinen vaihe: Komentorivikutsu Komentorivikutsu, eli komentoriviltä annettava kutsu parametreineen, tapahtuu seuraavan toteutusmallin mukaisesti: wclique [-hir] [--help] [--info] [--reorder] [--format={ascii,binary}] [--size={[+]n,max}] [--type={one,all}] [name] -h, --help -i, --info -r, --reorder tulostaa aputekstin tulostaa haun etenemisen näytölle. solmujen heuristinen järjestäminen --format={ascii,binary} syötetiedoston tyyppi, oletus on ASCII. --size={[+]n,max} haettujen klikkien koko, oletus on max, N := annettu koko, +N := >= annettu koko. --type={one,all} haettujen klikkien lukumäärä, oletus on one.

TOIMINNALLINEN MÄÄRITTELY 18 (19) Muutama tarkennus: 1. Painotettu/painottamaton: binaaritiedosto => aina painottamaton, ASCII => selviää tiedoston sisällöstä.. Jos syöte tiedoston nimi puuttuu luetaan standardi syöte.. Ohjelma tulostaa aina kaikki klikit, yksi klikki per rivi -> standardi tuloste. 5. ULKOISET LIITTYMÄT 5.1 Laitteistoliittymät Ei ole tarvi erillisiä laitteistoliittymiä. 5. Ohjelmistoliittymät Ei vaadi toimiakseen muita ohjelmia 5. Tietoliikenneliittymät Ei ole tietoliikenneliittymiä.. MUUT OMINAISUUDET.1 Suorituskyky ja vasteajat Suorituskyvylle annettiin vaatimusmäärittelyssä yksi vaatimus: n tulee olla ainakin yhtä tehokas kuin oli Patric Östergårdin protoversio. Varsinaisia tehokkuuslukuja ei pystytä takaamaan graafien monimuotoisuuden ja eri esitystapojen takia. Sama graafi voidaan esittää usealla eri tavalla, jolloin tehokkuus vaihtelee.. Käytettävyys, toipuminen, turvallisuus, suojaukset ei tee graafin järkevyystarkastelua mutta se tekee syötetiedoston syntaksitarkastelun, eli tarkistaa onko syötetiedosto oikeassa formaatissa.. Ylläpidettävyys Ensimmäinen ja ehkä tärkein ylläpidettävyyteen liittyvä tekijä on koodien kommentoinnit. Tämä tapahtuu kommentoimalla jokaisessa moduulissa sen tehtävät, rajapinnat ja tarkoitus. Toinen mainittava seikka on ohjelman manuaalit, jotka tehdään LaTex formaatissa, jotta manuaalien muokkaaminen olisi myöhemmin mahdollisimman helppoa Unix ympäristössä.

TOIMINNALLINEN MÄÄRITTELY 19 (19).4 Siirrettävyys/kannettavuus, yhteensopivuus Koska ohjelma on saatavana ANSI C muodossa, on sen siirrettävyys helppoa. Tietokoneelta vaaditaan vain yleinen ANSI -C kääntäjä joka suorittaa C -koodin käännöksen, jonka jälkeen ohjelma on ajettavissa..5 Operointi Operointiin liittyviä ominaisuuksia ei mainittavissa määrin ole.. SUUNNITTELURAJOITTEET.1 Standardit. Laitteistorajoitteet Ohjelma on tehty ANSI C kielellä kuten vaatimusmäärittelyissä on kerrottu. Ei rajoitteita. Ohjelmistorajoitteet.4 Muut rajoitteet ohjelma on käyttöjärjestelmä riippumaton. Sen tulee toimia yleisimmissä Unix koneissa sekä myöhemmin myös Windows maailmassa. Ei muita rajoitteita. 8. JATKOKEHITYSAJATUKSIA Myöhemmästä jatkokehityksestä vastaa Patric Östergård.