Obligatorisk opgave i dADS, forår 2003

Den obligatoriske opgave går ud på at skrive et Java-program, der kan finde en størst mulig pardannelse i en ikke-orienteret, todelt graf. Opgaven er struktureret som tre delopgaver, der stilles i forbindelse med ugesedlerne for uge 16/17, 18 og 19. Ved besvarelse af opgaven er det tilladt at arbejde i grupper på indtil to personer. Man kan aflevere besvarelser af delopgaverne til sin instruktor ganske som var de almindelige afleveringsopgaver. Der vil ikke blive stillet andre afleveringsopgaver til de uger, hvor der er obligatorisk opgave på programmet.

De tre delopgaver lægger op til en skridtvis konstruktion af et Java-program, der realiserer en algoritme, der kan finde en størst mulig pardannelse. Selve forløbet kommer til at bestå af tre skridt: Først konstrueres en abstrakt algoritme, som bevises korrekt; dernæst designes der effektive datastrukturer; og til sidst foretages der en implementation i Java.

Det færdige program vil skulle demonstreres på data, der er hentet fra et skema-hold-planlægningsproblem fra det virkelige liv, samt på tilfældigt genererede data.

Den samlede besvarelse af opgaven (som består af besvarelser af tre delopgaver) skal afleveres på Datalogisk Informationskontor senest d. 12. maj 2003 kl. 12.00. Der er ingen mulighed for genaflevering. Besvarelsen skal være forsynet med den officielle forside i udfyldt stand og skal være samlet i plastomslag eller lignende.

Parringer, dækninger og parringsgrafer

En ikke-orienteret graf G=(V,E) er todelt, hvis knudemængden V kan deles i to disjunkte delmængder V1 og V2, således at alle kanterne i E forbinder en knude i V1 med en knude i V2.

En parring er en delmængde P af kanterne i E, hvor alle kanterne i P er knudedisjunkte.

En dækning er en delmængde D af knuderne i V, således at alle kanterne i E er incidente med mindst een knude fra D.

Nedenstående graf er et eksempel på en todelt graf. De fede kanter angiver parringen P = {{A1, B1}, {A2, B2}, {A3, B3}} af størrelse 3. Et eksempel på en dækning er knuderne D = {A1, A2, A3, B2}.

[En todelt graf med dækning]

For en vilkårlig parring P og dækning D gælder der, at enhver kant i P er dækket af en knude i D, hvilket giver os følgende simple observation:

|P| er mindre end |D|.

For en givet todelt graf G og parring P definerer vi den tilhørende parringsgraf til at være en orienteret graf G'=(V, E'), hvor kanterne i E' nu er orienterede. Kanter, der indgår i parringen P, er orienteret fra V2 til V1 og de øvrige kanter er orienteret fra V1 til V2. Knuder i V1 lader vi være firkantede og knuder i V2 runde.

For ovenstående graf og parring har vi følgende parringsgraf:

picture89

Firkantede knuder med indgrad 0 kaldes initialknuder, runde knuder med udgrad 0 kaldes terminalknuder. En vej fra en initialknude til en terminalknude kaldes en skiftevej.

Det er nemt at indse, at hvis der findes en skiftevej i en parringsgraf, så kan man, ved at ændre orienteringen på alle kanterne på skiftevejen, opnå en parring der er een større.

I ovenstående graf udgør (A4, B2, A2, B3, A3, B5) en skiftevej, og hvis vi ændrer orienteringen langs denne vej, så for vi følgende parringsgraf, der repræsenterer en parring, der er een større.

picture126

Den obligatoriske opgave går ud på at bruge denne teknik til at finde størst-mulig parring. Bemærk at den sidst opnåede parring i ovenstående graf indeholder 4 kanter, og at den derfor er størst mulig idet der også findes en dækning i grafen bestående af 4 knuder.

Opgave O1

Denne opgave går ud på at konstruere en algoritme til at finde størst mulig pardannelse.

Betragt følgende transitionssystem, der farver knuder i parringsgrafer. Ufarvede knuder kaldes hvide, skraverede knuder grå, og udfyldte knuder er sorte. De farvede grafer kaldes brogede.

Transitionssystem: Farvning af parringsgrafer
Konfigurationer: Brogede parringsgrafer
Transitioner: hvid firkant til sort firkant hvis indgraden af hvid firkant er 0
sort firkant til hvid cirkel til hvid firkant til sort firkant til grå cirkel til grå firkant
grå firkant til hvid cirkel til hvid firkant til grå firkant til grå cirkel til grå firkant
sort firkant til hvid cirkel til sort firkant til sort cirkel hvis udgraden af hvid cirkel er 0
grå firkant til hvid cirkel til grå firkant til sort cirkel hvis udgraden af hvid cirkel er 0

Lad nu P være en parring i en graf G og G' den tilhørende parringsgraf. I en slutkonfiguration for en proces, der starter med den hvide graf G', gælder der følgende:

U1:Alle grå og sorte knuder kan nås fra en firkantet sort knude.

U2: |P| = (antal hvide
      kasser) + (antal grå cirkler) i G'

U3: Knudemængden bestående af hvide firkanter, grå cirkler og sorte cirkler dækker alle kanter i G.

Opgave 1 består af følgende:
  1. Bevis U1 vha. et passende invariansargument.
  2. Bevis U2 vha. et passende invariansargument.
  3. Bevis U3 ved at vise, at når ingen af transitionsreglerne kan anvendes, findes der ingen kanter af formen grå kasse til hvid cirkel eller sort kasse til
      hvid cirkel eller hvid cirkel til grå kasse eller hvid cirkel til
      sort kasse.
  4. Betragt nu følgende abstrakte algoritme:
    Algorithm StørstMuligPardannelse(G):
    Input: En ikke-orienteret, todelt graf G
    Output: P, en størst mulig parring i G
    Method: Lad G' være en parringsgraf for G
    Farv G' v.hj.a. transitionssystemet ovenfor
    // Invariant:U1 og U2 og U3
    while    der findes en vej fra en sort
	    firkant til en sort cirkel i G'   do
           Opdatér G' mht. den
	  fundne vej
           Farv alle knuder i G' hvide
           Farv G' v.hj.a. transitionssystemet ovenfor
    Sæt P til mængden af ``venstreorienterede'' kanter i G'

    Argumentér for, at invarianten er gyldig og at algoritmen er korrekt.

  5. Bevis følgende sætning, som viser, at der kan opstå lighedstegn i uligheden |P| er mindre end |D| fra introduktionen.

    Sætning (König 1931). I enhver todelt graf er størrelsen af den maksimale parring lig størrelsen af den minimale dækning.


Denne side vedligeholdes af Gerth Stølting Brodal <gerth@cs.au.dk>.