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

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

TOIMINNALLINEN MÄÄRITTELY MS

TEKNINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

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

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

TIEDONKULKU. PROJEKTITYÖ Tik Wclique

Algoritmit 1. Luento 1 Ti Timo Männikkö

Verkon värittämistä hajautetuilla algoritmeilla

TEKNINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

TEKNINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

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

6.4. Järjestyssuhteet

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

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

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

811312A Tietorakenteet ja algoritmit I Johdanto

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

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

Datatähti 2019 loppu

811120P Diskreetit rakenteet

Vaatimusmäärittely. Kymenlaakson partiopiirin jäsenrekisteri

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

10. Painotetut graafit

Tietorakenteet ja algoritmit - syksy

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

T Testiraportti - integraatiotestaus

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

TOIMINNALLINEN MÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0

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

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

Harjoitus 3 ( )

Tietotekniikan valintakoe

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

Julkaiseminen verkossa

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

Ohjelmoinnin perusteet Y Python

TOIMINNALLINEN MÄÄRITTELY. PROJEKTITYÖ Tik Wclique

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

Simulaattorin asennus- ja käyttöohje

SÄHKE-hanke. Abstrakti mallintaminen Tietomallin (graafi) lukuohje

Ohjelmoinnin jatkokurssi, kurssikoe

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Harjoitus 3 (viikko 39)

Algoritmit 1. Luento 2 Ke Timo Männikkö

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

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

T Testiraportti - järjestelmätestaus

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

Toiminnallinen määrittely. XLet esimerkkisovellus

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

VAATIMUSMÄÄRITTELY. Polku Versio 1.1. Projektiryhmä

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

Ohjelmoinnin perusteet Y Python

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

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

811120P Diskreetit rakenteet

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

Ohjelmoinnin perusteet Y Python

Numeeriset menetelmät

Zeon PDF Driver Trial

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

Harjoitus 3 ( )

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

811120P Diskreetit rakenteet

VAATIMUSMÄÄRITTELY. Polku Versio 1.2. Projektiryhmä

8. Näppäimistöltä lukeminen 8.1

Valppaan asennus- ja käyttöohje

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Visma Business AddOn Tositteiden tuonti. Käsikirja

Datatähti 2000: alkukilpailun ohjelmointitehtävä

Luento 4. Timo Savola. 21. huhtikuuta 2006

Johdatus verkkoteoriaan 4. luento

Muuttujien määrittely

Algoritmit 1. Luento 3 Ti Timo Männikkö

8. Näppäimistöltä lukeminen 8.1

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ohjelmoinnin perusteet, kurssikoe

Demo 1: Simplex-menetelmä

Malliratkaisut Demot

Ohjelmoinnin perusteet Y Python

Transkriptio:

TOIMINNALLINEN MÄÄRITTELY PROJEKTITYÖ Tik-7.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... 7.1 Tietosisältö... 7.1.1 Dimacsin ascii -formaatti... 7.1. Dimacsin binääri- formaatti... 8. Käyttöintensiteetti... 8. Kapasiteettivaatimukset... 8 4. TOIMINNOT... 9 4.1 Yleistä... 9 4. Järjestelmän toiminnot... 10 4..1 Järjestäminen... 10 4..1.1 Painottamattoman graafin värittäminen... 11 4..1. Painotetun graafin värittäminen... 11 4.. Painottamattoman maksimiklikin koko... 1 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..7 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... 17 4..17 n toinen vaihe: Komentorivikutsu... 18 5. ULKOISET LIITTYMÄT... 18 5.1 Laitteistoliittymät... 18 5. Ohjelmistoliittymät... 18 5. Tietoliikenneliittymät... 18. MUUT OMINAISUUDET... 19.1 Suorituskyky ja vasteajat... 19. Käytettävyys, toipuminen, turvallisuus, suojaukset... 19. Ylläpidettävyys... 19.4 Siirrettävyys/kannettavuus, yhteensopivuus... 19.5 Operointi... 19 7. SUUNNITTELURAJOITTEET... 0

7.1 Standardit... 0 7. Laitteistorajoitteet... 0 7. Ohjelmistorajoitteet... 0 7.4 Muut rajoitteet... 0 8. JATKOKEHITYSAJATUKSIA... 0 VERSIOHISTORIA Versio Päivämäärä Laatija Kuvaus 1.0-7.11.00 JDu Korjattu versio, klikkien kuvat korjattu oikeita vastaaviksi. 1.0-8.11.00 JDu Esimerkkigraafeja paranneltu ja vaatimusmäärittelyn vaatimuksien otsikointitapa tuotu toiminnalliseenmäärittelyyn. Lisätty useita parannuksia. 1.1-0 0..01 JDu Päivitetty komentorivikutsu.

TOIMINNALLINEN MÄÄRITTELY 4 (0) 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 (0) 1.4 Viitteet [Vaat] [Toim] [Patrik1] Vaatimusmäärittely Toiminnallisen määrittelyn mallidokumentti Patric Östergårdin toimittama dokumentti 1 wcliquesta http://www.tcs.hut.fi/~pat/paper1.ps [Patrik] Patric Östergårdin toimittama dokumentti wcliquesta http://www.tcs.hut.fi/~pat/paper.ps [Patrik] Patric Östergårdin kirjoittama dokumentti wcliquen vaatimuksista http://www.tcs.hut.fi/~pat/wclique.html 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 7 kertoo ohjelman rajoitteista Viimeisessä luvussa kerrotaan jatkokehityssuunnitelmista.

TOIMINNALLINEN MÄÄRITTELY (0). YLEISKUVAUS.1 Ympäristö. Toiminta ohjelma toimii Linux ja Unix ympäristössä (myöhemmin ehkä 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. 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 7 (0). TIEDOT JA TIETOKANTA.1 Tietosisältö ohjelma voi lukea syötteenä kahta eri formaattia: binääristä ja ascii muotoista Dimacs -formaattia. Tulosteena antaa joko kokonaislukuja tai solmupisteiden luettelon/luetteloita..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 Tulostiedostot: Ratkaisurivi (Solution Line) alkaa pienellä s-kirjaimella esim. rivi s clq 1 ilmaisee painotetun klikin kooksi 1 ja vastaavasti rivi s clu 1 ilmaisee painottamattoman klikin kooksi 1. Rivi s col 4

TOIMINNALLINEN MÄÄRITTELY 8 (0) puolestaan ilmaisee graafin väritykseen tarvittavien värien määrän. Bound Line alkaa pienellä p-kirjaimella ilmaisee esim. maksimiklikin ylärajan b 1 Klikkirivit (Clique Lines) alkavat pienellä v-kirjaimella ja ilmaisevat klikin solmut. Kutakin solmua kohti on yksi rivi. Esimerkkinä alla klikki, jossa on neljä solmua: 1, 4,. v 1 v v 4 v Muitakin rivityyppejä on ja niihin voi tutustua tarkemmin yllämainitun dokumentin avulla..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.. 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.

TOIMINNALLINEN MÄÄRITTELY 9 (0) 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 ssa 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 :ssa. 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 7, merkintätapa on 4(7). Mikäli painoarvo on kaikissa solmuissa 1, ei painoarvoja merkitä ja graafia käsitellään painottamattomana graafina. Aloitus Syöte Järjestä graafi Tulosta Prosessoi Lopetus Kuva. n toiminta vuokaaviona.

TOIMINNALLINEN MÄÄRITTELY 10 (0) 1(1) (8) () 4() 5() () 7(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:ssa. Kuva 4. Painottamattoman graafin solmujen värittäminen klikkien perusteella.

TOIMINNALLINEN MÄÄRITTELY 11 (0) Kaikki solmut väritetään minimimäärällä värejä 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. 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.

TOIMINNALLINEN MÄÄRITTELY 1 (0) 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 7 Kuva 5. Maksimi klikki. 8 4.. Yhden painotetun maksimiklikin laskeminen laskee pyydettäessä maksimiklikin ja tulostaa sen solmupisteet (Kuva ). 1,,,,7,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 7:ssa.

TOIMINNALLINEN MÄÄRITTELY 1 (0) 1 1 1 1 variaatio 7 8 variaatiota (pisteet ja vaihtuvat pisteiksi ja 7) 8 variaatiota (pisteet ja -> pisteiksi ja 7) 8 variaatiota (pisteet ja -> pisteiksi ja 7) 1 7 5 7 8 7 variaatiota (piste -> pisteeksi ) variaatiota (piste -> pisteeksi ) variaatiota (piste -> pisteeksi ) 1 7 5 variaatiota (piste -> pisteeksi 7) variaatiota (piste -> pisteeksi 7) 8 variaatiota (piste 7 -> pisteeksi ) Kuva 7. Esimerkkikuvaajan klikkejä, joissa klikkien määrä on 4. 4..7 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,,,,7.

TOIMINNALLINEN MÄÄRITTELY 14 (0) 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:ssa on osoitettu ne neljä 5:n solmun klikkiä jota esimerkkigraafista löytyy. n antama tuloste on esitetty Kuva 9:ssa. 1 1 5 7 7 7 7 8 8 Kuva 8. Esimerkkikuvaajan klikit, joissa klikkien määrä on 5 tai enemmän. 1,,,,7,8 1,,,,7,,5,,7,,,7,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) () () 7(4) Kuva 10. Painotettu maksimi klikki. 8(5)

TOIMINNALLINEN MÄÄRITTELY 15 (0) 1,,,,7,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:,,,7 4..1 Kaikkien luokkaa S klikkien laskeminen laskee kaikkien klikkien solmupisteet, jotka ovat kooltaan luokkaa S. Jos pyydetään luokkaa 17 olevien klikkien lukumäärää, palauttaa kolme sarjaa solmupisteitä. Nämä ehdon täyttävät klikit on esitetty Kuva 1. () 1(1) (8) () 5() () 7(4) (8) () 7(4) Kuva 1. Luokkaa 17 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,,,,7.

TOIMINNALLINEN MÄÄRITTELY 1 (0) 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) () () 7(4) () 7(4) () 7(4) () 7(4) 8(5) (8) (8) () (8) 8(5) () 7(4) () 5() () 7(4) 8(5) 8(5) Kuva 1. Klikit joiden arvo vähintään 1. 1,,,,7,,5,,7,,,7,5 1,,,,7,8,,7,8,,,8,5,,7 Kuva 14. Tuloste painotetussa tapauksessa: S on vähintään 1.

TOIMINNALLINEN MÄÄRITTELY 17 (0) 4..1 n ensimmäinen vaihe: Funktiokutsu funktiota voidaan kutsua ohjelmakoodista. Seuraavassa on esitetty funktion kutsurajapinta ja parametrien selitykset. Int wclique( void *input_ptr, void *output_ptr, long number_of_nodes, int ordering, int wclique_algorithm, long node_boundary_value); Input_ptr on osoitin graafin kuvaustietorakenteen alkuun. Tietorakenne on kuvattu teknisessä määrittelyssä. Käyttäjän on varattava ja täytettävä tietorakenne ennen funktiokutsua. Output_ptr on osoitin graafin tulostietorakenteeseen. Tietorakenne on kuvattu teknisessä määrittelyssä. Number_of_nodes määrittää kuinka monta solmua graafissa on. Ordering määrittää järjestetäänkö tietorakenne. Jos ordering saa arvon 0 niin tietorakennetta ei järjestetä ja jos ordering saa arvon 1 niin järjestäminen tapahtuu värittämismenetelmällä. _algorithm määrittää mitä algoritmia funktion kutsuja haluaa käyttää. Kuvassa 14 parametrin -c kohdalla on listattu valittavat algoritmit. Node_boundary_value määrittää halutun raja-arvon etsittävien klikkien koolle (S). Tällä on merkitystä osassa algoritmeista. Esimerkiksi etsittäessä S kokoisia klikkejä. Paluuarvona funktio palauttaa tiedon funktion onnistumisesta tai epäonnistumisesta (virhekoodi). Tämä on kuvattu tarkemmin teknisessä määrittelyssä.

TOIMINNALLINEN MÄÄRITTELY 18 (0) 4..17 n toinen vaihe: Komentorivikutsu ohjelma käynnistetään komennolla: wclique ja sen parametrin on esitetty alla. Komentorivikutsu tapahtuu nimensä mukaisesti komentoriviltä seuraavan esimerkin mukaisesti: wclique [-hir] [--help] [--info] [--reorder] [--format={ascii,binary}] [--size={[+]n,max}] [-- type={one,all}] [name] -h, --help -i, --info -r, --reorder --format={ascii,binary} --size={[+]n,max} tulosta aputeksti tulosta haun etenemista kuvaavaa tietoa standard errorriin solmujen heuristinen jarjestely syotetiedoston tyyppi, default on ascii. haettujen klikkien koko, default on max, N := annettu koko, +N := >= annettu koko. --type={one,all} haettujen klikkien lukumaara, default on one. Muutama tarkennus: 1. Painotettu/painottamaton: binaaritiedosto => aina painottamaton, ascii => selviaa tiedoston sisallosta.. Jos input-tiedoston nimi puuttuu luetaan standard inputia.. Ohjelma tulostaa aina kaikki klikit, yksi klikki per rivi -> standard output. 5. ULKOISET LIITTYMÄT 5.1 Laitteistoliittymät Ei ole laitteistoliittymiä. 5. Ohjelmistoliittymät Ei ole ohjelmistoliittymiä. 5. Tietoliikenneliittymät Ei ole tietoliikenneliittymiä.

TOIMINNALLINEN MÄÄRITTELY 19 (0). 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ä..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.

TOIMINNALLINEN MÄÄRITTELY 0 (0) 7. SUUNNITTELURAJOITTEET 7.1 Standardit 7. Laitteistorajoitteet Ohjelma on tehty ansi -C kielellä kuten vaatimusmäärittelyissä on kerrottu. Ei rajoitteita 7. Ohjelmistorajoitteet 7.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.