cls
function matrixdost($matrix){
#алгоритм уоршела, для вычисления матрицы достижимости
for ($k = 0; $k -lt $matrix.Length; $k++){
for ($i = 0; $i -lt $matrix.Length; $i++){
for ($j = 0; $j -lt $matrix.Length; $j++){
$matrix[$i][$j] = $matrix[$i][$j] -bor ($matrix[$i][$k] -band $matrix[$k][$j])
}
}
}
}
function matrixprint($matrix){
for($i = 0; $i -lt $matrix.Length; $i++){
$str = [System.String]::Join(",", $matrix[$i])
Write-Host $str
}
}
function matrixsv($matrix){
$v = @()
$a = @()
[object[]]$all = @()
for($i = 0; $i -lt $matrix.Length; $i++){
$v += 1
}
#компоненты связанности
for($i = 0; $i -lt $v.Length; $i++){
$a = @()
if ($v[$i] -eq 0){
continue
}
for($j = 0; $j -lt $v.Length; $j++){
if ($matrix[$i][$j] -eq 1){
$a += $j
$v[$j] = 0
}
}
if ($a.Length -ne 0){
$all += [object]$a
$all += "-"
}
}
for ($i=0; $i -lt $v.Length; $i++){
if ($v[$i] -eq 1){
$all += $i
$all += "-"
}
}
return $all
}
$m = @(
@(0, 0, 0, 0, 0, 1, 0, 1),
@(0, 0, 0, 0, 1, 0, 0, 0),
@(0, 0, 0, 0, 0, 1, 0, 1),
@(0, 0, 0, 0, 1, 0, 0, 0),
@(0, 1, 0, 1, 0, 0, 0, 0),
@(1, 0, 1, 0, 0, 0, 0, 0),
@(0, 0, 0, 0, 0, 0, 0, 0),
@(1, 0, 1, 0, 0, 0, 0, 0)
)
matrixprint $m
matrixdost $m
"-------------"
matrixprint $m
$svcomp = matrixsv $m
$str = [System.String]::Join(",", $svcomp)
Write-Host $str
function matrixdost($matrix){
#алгоритм уоршела, для вычисления матрицы достижимости
for ($k = 0; $k -lt $matrix.Length; $k++){
for ($i = 0; $i -lt $matrix.Length; $i++){
for ($j = 0; $j -lt $matrix.Length; $j++){
$matrix[$i][$j] = $matrix[$i][$j] -bor ($matrix[$i][$k] -band $matrix[$k][$j])
}
}
}
}
function matrixprint($matrix){
for($i = 0; $i -lt $matrix.Length; $i++){
$str = [System.String]::Join(",", $matrix[$i])
Write-Host $str
}
}
function matrixsv($matrix){
$v = @()
$a = @()
[object[]]$all = @()
for($i = 0; $i -lt $matrix.Length; $i++){
$v += 1
}
#компоненты связанности
for($i = 0; $i -lt $v.Length; $i++){
$a = @()
if ($v[$i] -eq 0){
continue
}
for($j = 0; $j -lt $v.Length; $j++){
if ($matrix[$i][$j] -eq 1){
$a += $j
$v[$j] = 0
}
}
if ($a.Length -ne 0){
$all += [object]$a
$all += "-"
}
}
for ($i=0; $i -lt $v.Length; $i++){
if ($v[$i] -eq 1){
$all += $i
$all += "-"
}
}
return $all
}
$m = @(
@(0, 0, 0, 0, 0, 1, 0, 1),
@(0, 0, 0, 0, 1, 0, 0, 0),
@(0, 0, 0, 0, 0, 1, 0, 1),
@(0, 0, 0, 0, 1, 0, 0, 0),
@(0, 1, 0, 1, 0, 0, 0, 0),
@(1, 0, 1, 0, 0, 0, 0, 0),
@(0, 0, 0, 0, 0, 0, 0, 0),
@(1, 0, 1, 0, 0, 0, 0, 0)
)
matrixprint $m
matrixdost $m
"-------------"
matrixprint $m
$svcomp = matrixsv $m
$str = [System.String]::Join(",", $svcomp)
Write-Host $str
Комментариев нет:
Отправить комментарий