Alternating paths algorithm: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| No edit summary | No edit summary | ||
| Line 11: | Line 11: | ||
|   '''Invariant:''' Before and after each iteration, <math>M</math> is a matching.   |   '''Invariant:''' Before and after each iteration, <math>M</math> is a matching.   | ||
|   '''Variant:''' <math>|M|</math> increases by <math>1</math>. |   '''Variant:''' <math>|M|</math> increases by <math>1</math>. | ||
| Break condition: There is no more augmenting alternating path. |  '''Break condition:''' There is no more augmenting alternating path. | ||
| Induction basis | == Induction basis == | ||
| Abstract view:  | '''Abstract view:''' <math>M</math> is initialized to be some matching, for example,  <math>M:=\empty1</math>. | ||
| Implementation: Obvious. | '''Implementation:''' Obvious. | ||
| Proof: Nothing to show. | '''Proof:''' Nothing to show. | ||
| Induction step | == Induction step == | ||
| Abstract view: If there is an augmenting alternating path, use it to increase ; otherwise, terminate the algorithm and return . | '''Abstract view:''' If there is an augmenting alternating path, use it to increase <math>M</math>; otherwise, terminate the algorithm and return <math>M</math>. | ||
| Implementation: | '''Implementation:''' | ||
| Call the algorithm Find augmenting alternating path. | # Call the algorithm Find augmenting alternating path. | ||
| If this call fails, terminate the algorithm and return . | # If this call fails, terminate the algorithm and return <math>M</math>. | ||
| Otherwise, let  | # Otherwise, let <math>E'</math> denote the set of all edges on the path delivered by that call. | ||
| Let  | # Let <math>M</math> be the [http://en.wikipedia.org/wiki/Symmetric_difference symmetric difference] of <math>M</math> and <math<???</math>  | ||
| Correctness: | Correctness: | ||
| Complexity | == Complexity == | ||
|  '''Statement:''' | |||
|  '''Proof:''' | |||
| ==Further information== | |||
| Further information | |||
Revision as of 13:14, 27 January 2015
Algorithmic problem: The graph [math]\displaystyle{ G }[/math] is biparite.
Type of algorithm: loop
Auxillary data:
Abstract view
Invariant: Before and after each iteration, [math]\displaystyle{ M }[/math] is a matching. Variant: [math]\displaystyle{ |M| }[/math] increases by [math]\displaystyle{ 1 }[/math]. Break condition: There is no more augmenting alternating path.
Induction basis
Abstract view: [math]\displaystyle{ M }[/math] is initialized to be some matching, for example, [math]\displaystyle{ M:=\empty1 }[/math]. Implementation: Obvious. Proof: Nothing to show.
Induction step
Abstract view: If there is an augmenting alternating path, use it to increase [math]\displaystyle{ M }[/math]; otherwise, terminate the algorithm and return [math]\displaystyle{ M }[/math]. Implementation:
- Call the algorithm Find augmenting alternating path.
- If this call fails, terminate the algorithm and return [math]\displaystyle{ M }[/math].
- Otherwise, let [math]\displaystyle{ E' }[/math] denote the set of all edges on the path delivered by that call.
- Let [math]\displaystyle{ M }[/math] be the symmetric difference of [math]\displaystyle{ M }[/math] and <math<???</math>
Correctness:
Complexity
Statement: Proof: