Pivot partitioning by scanning: Difference between revisions

From Algowiki
Jump to navigation Jump to search
(Created page with " '''Algorithmic problem:''' Pivot partioning by scanning '''Prerequisites:''' None '''Type of algorithm:''' loop '''Auxiliary data:''' Five index pointers, <math>m_1,m_2,i_...")
 
No edit summary
Line 6: Line 6:
'''Type of algorithm:''' loop
'''Type of algorithm:''' loop


'''Auxiliary data:''' Five index pointers, <math>m_1,m_2,i_1,i_2,i_3 \in \IN.</math>
'''Auxiliary data:''' Five index pointers, <math>m_1,m_2,i_1,i_2,i_3 \in \|N.</math>


'''Auxilliary data:'''
'''Auxilliary data:'''

Revision as of 15:07, 13 January 2015

Algorithmic problem: Pivot partioning by scanning

Prerequisites: None

Type of algorithm: loop

Auxiliary data: Five index pointers, [math]\displaystyle{ m_1,m_2,i_1,i_2,i_3 \in \|N. }[/math]

Auxilliary data:

  1. A constant representing the number of node: [math]\displaystyle{ n = |V| }[/math]
  2. A distance-valued [math]\displaystyle{ (n \times n) }[/math] matrix [math]\displaystyle{ M }[/math]
  3. C An ordering of all nodes, that is, [math]\displaystyle{ V = \{u_1, \ldots ,u_n\} }[/math]

Abstract View

Invariant: After [math]\displaystyle{ i \ge 0 }[/math] iterations, for [math]\displaystyle{ v,w \in V }[/math], [math]\displaystyle{ M(v,w) }[/math] is the length of a shortest [math]\displaystyle{ (v,w) }[/math]-path subject to the constraint that all internal nodes of the path belong to [math]\displaystyle{ \{u_1, \ldots , u_i\} }[/math].

Varian: [math]\displaystyle{ i }[/math] increases by [math]\displaystyle{ 1 }[/math].

Break condition: It is [math]\displaystyle{ i=n }[/math]

Induction basis

Abstract view: [math]\displaystyle{ \forall v,w \in V }[/math] we set

  1. [math]\displaystyle{ M(v,v):=0, \forall v \in V }[/math]
  2. [math]\displaystyle{ M(v,w):=l(v,w), (v,w) \in A }[/math]
  3. [math]\displaystyle{ M(v,w):= +\infty }[/math], otherwise

Implementation: Obvious.

Proof: Nothing to show.

Induction step

Abstract view:

Implementation:

Correctness: Let [math]\displaystyle{ p }[/math] denote a shoortest [math]\displaystyle{ (v,w }[/math]-path subject to the constraint that all internal nodes are taken from [math]\displaystyle{ \{u_1, \ldots, u_n \} }[/math].

  1. If [math]\displaystyle{ p }[/math] does not contain [math]\displaystyle{ u_i }[/math], [math]\displaystyle{ p }[/math] is even a shortest [math]\displaystyle{ (v,w) }[/math]-path such that all internal nodes are taken from [math]\displaystyle{ \{u_1, \ldots , u_{i-1} \} }[/math]. In this case, the induction hypothesis implies that the value of [math]\displaystyle{ M(v,w) }[/math] immediately before the i-th iteration equals the length of [math]\displaystyle{ p }[/math]. Clearly, the i-th iteration does not change the value of [math]\displaystyle{ M(v,w) }[/math] in this case.
  2. On the other hand, suppose [math]\displaystyle{ p }[/math] does contain [math]\displaystyle{ u_i }[/math]. Due to the prefix property, the segment of [math]\displaystyle{ p }[/math] from [math]\displaystyle{ v }[/math] to [math]\displaystyle{ u_i }[/math] and from [math]\displaystyle{ u_i }[/math] to [math]\displaystyle{ w }[/math] are a shortest [math]\displaystyle{ (v,u_i) }[/math]-path and a shortest [math]\displaystyle{ (u_i,w) }[/math]-path, respectively, subject to the constraint that all internal nodes are from [math]\displaystyle{ \{u_1, \ldots , u_{i-1} \} }[/math]. The induction hypothesis implies that tehese lengths equal the values [math]\displaystyle{ M(v,u_i) }[/math] and [math]\displaystyle{ M(u_i, w) }[/math], respectively.

Complexity

Statement: [math]\displaystyle{ \mathcal{O}(n^3) }[/math]

Proof: The overall loop has [math]\displaystyle{ n }[/math] iterations. In each iteration, we update all [math]\displaystyle{ n^2 }[/math] matrix entities. Each update requires a constant number of steps.