@@ -9,26 +9,28 @@ module BFS =
99 let levelBFS ( matrix : Matrix < bool >) ( source : int ) : Vector < int > =
1010 let vertexCount = matrix.RowCount
1111 let levels = DenseVector( Array.zeroCreate vertexCount, IntegerMonoid.plus)
12+
1213 let frontier = SparseVector( vertexCount, [ source, true ])
1314
1415 let mutable currentLevel = 1
15- while !> ( frontier.Reduce BooleanMonoid.any) && currentLevel <= vertexCount do
16+ while !> ( frontier.Reduce BooleanMonoid.any) && currentLevel < vertexCount do
1617 levels.Fill( Mask1D.regular frontier) <- Scalar currentLevel
1718 frontier.Clear()
1819 frontier.[ Mask1D.complemented levels] <- ( frontier .@ matrix) ( Mask1D.complemented levels) BooleanSemiring.anyAll
1920 currentLevel <- currentLevel + 1
2021
2122 upcast levels
2223
23- let parentBFS ( matrix : Matrix < bool >) ( source : int ) : Vector < int > =
24- let vertexCount = matrix.RowCount
25- let id = DenseVector( Array.init vertexCount id, IntegerMonoid.plus)
26- let frontier = SparseVector( vertexCount, [ source, source])
27- let parents = SparseVector( vertexCount, [ source, - 1 ])
24+ // let parentBFS (matrix: Matrix<bool>) (source: int) : Vector<int> =
25+ // let vertexCount = matrix.RowCount
26+ // let parents = SparseVector(vertexCount, [source, -1])
27+
28+ // let id = DenseVector(Array.init vertexCount id, IntegerMonoid.plus)
29+ // let frontier = SparseVector(vertexCount, [source, source])
2830
29- for i in 0 .. vertexCount - 1 do
30- frontier.[ Mask1D.complemented parents] <- ( frontier .@ matrix) ( Mask1D.complemented parents) IntegerSemiring.minFirst
31- parents.[ Mask1D.regular frontier] <- frontier
32- frontier.[ Mask1D.regular frontier] <- id
31+ // for _ in 1 .. vertexCount - 1 do
32+ // frontier.[Mask1D.complemented parents] <- (frontier .@ matrix) (Mask1D.complemented parents) IntegerSemiring.minFirst
33+ // parents.[Mask1D.regular frontier] <- frontier
34+ // frontier.[Mask1D.regular frontier] <- id
3335
34- upcast parents
36+ // upcast parents
0 commit comments