User:Realazthat/Notes/Scrap: Difference between revisions

From Rosetta Code
Content added Content deleted
(Undo revision 98712 by Realazthat (talk))
Line 20: Line 20:
& = &
& = &
\begin{cases}
\begin{cases}
0 & \text{if }\left(u,v\right)\text{ is an edge in }E\\
0 & \text{if }\left(u,v\right) \in E\\
1 & \text{if }\left(u,v\right)\text{ is not an edge in }E\end{cases}\\
1 & \text{if }\left(u,v\right) \notin E\end{cases}\\


f\left(E,F,u,v\right)
f\left(EF,u,v\right)
\in \left\{0,1\right\}
\in \left\{0,1\right\}
& = &
& = &
\begin{cases}
\begin{cases}
0 & \text{if } b\left(E,u,v\right) \neq 1 \vee b\left(F,u,v\right) \neq 0\\
0 & \text{if }\left(u,v\right) \in F\\
1 & \text{if } b\left(E,u,v\right) = 1 \wedge b\left(F,u,v\right) = 0\end{cases} \\
1 & \text{if }\left(u,v\right) \notin F\end{cases}\\


c\left(C,E,p,q,r,s\right)\in\left\{ 0,1,2,3\right\} & = & b\left(E,C_{p-1},C_{q+1}\right)+b\left(E,C_{q},C_{s}\right)+b\left(E,C_{p},C_{r}\right) \\
c\left(C,E,p,q,r,s\right)\in\left\{ 0,1,2,3\right\} & = & b\left(E,C_{p-1},C_{q+1}\right)+b\left(E,C_{q},C_{s}\right)+b\left(E,C_{p},C_{r}\right) \\

Revision as of 21:55, 4 January 2011

Du


Naive algorithm


newedgdes(C,p,q,r,s):
  return { (C[p-1],C[q+1]), (C[q],C[s]), (C[p], C[r]) }

countbps(E,NE):
  newbps = 0
  for ( ne in NE )
    if ( ne !in E )
      ++newbps
  return newbps


countmainbps(F,E,NE):
  newmainbps = 0
  for ( ne in NE )
    if ( ne !in E && ne in F )
      ++newmainbps
  return newmainbps



m(C,F,E,p):
  min = infinity
  n = |C|
  for ( q in range(p,p-2) )
    for ( s in range( q + 2, p ) )
      r = s - 1
      for ( i in range(2) )
        NE = newedges(C,p,q,r,s)
        if ( |NE| != 0 )
          newbps = countbps(F,E,NE)
          newmainbps = countmainbps(F,E,NE)
          
          if ( newbps == 0 || newmainbps > 0 )
            min = newbps < min ? newbps : min
       
        swap(r,s)
  return min

Better algorithm