добра всем.
У меня такая проблема:
Есть входной 2мерный массив(квадратная матрица):
CODE (
htmlphp):
скопировать код в буфер обмена
пример:
[0
] => Array ( [0
] => 99999999999999999999999
[1
] => 10
[2
] => 4
.4721359549996
[3
] => 11
.313708498985
) [1
] => Array ( [0
] => 10
[1
] => 99999999999999999999999
[2
] => 9
.6953597148327
[3
] => 13
.266499161422
) [2
] => Array ( [0
] => 4
.4721359549996
[1
] => 9
.6953597148327
[2
] => 99999999999999999999999
[3
] => 11
.045361017187
) [3
] => Array ( [0] => 11
.313708498985
[1] => 13
.266499161422
[2] => 11
.045361017187
[3] => 99999999999999999999999 ) )
На каждом шаге мне нужно удалять , например, вторую строку, второй столбец, сохранять её номер (цифру 2) и повторять снова, пока не останется лишь один элемент.
Но при этом ключи должны оставаться неизменными (с ними тоже после будут манипуляции)
Так вот, мне нужно чтобы последующие шаги не обрабатывали элементы (ключи), которых нет в массиве.
Может есть какое-то условие , чтобы это обойти.
Код могу предоставить по требованию.
CODE (
htmlphp):
скопировать код в буфер обмена
for($c=0;$c<count($file_start);$c++){
for($j=0;$j<count($sost);$j++){
if ($j!==0){
$minimum[$j] = min($sost[$j]); $minimal = min($minimum); if ($key !== false ){
$keys[$j]= $key;
}
}
}
$first=$keys[0];
$second=$keys[1];
for ($w=0;$w<count($stack2[$first]);$w++){
$stack2[$first][$w] = $stack2[$first][$w]+$stack2[$second][$w];
}
unset ($stack2[$second]); echo '<br>';
echo count($stack2);
echo '<br>';
$stack2 = array_values($stack2);
print_r($stack2);
$maxx= max(array_flip((array_keys($stack2))));
for ($i=0;$i<count($stack2);$i++){
if($i !== $second){
for ($k=0;$k<count($stack2);$k++){
if ($k!==$second){
$proizv = 0;
for ($a=0;$a<$elements;$a++){
$minus = $stack2[$i][$a]-$stack2[$k][$a];
$proizv = $proizv + $minus;
}
if ($proizv ==0)
$proizv = '99999999999999999999999';
$sost[$i][$k] = $proizv;
echo $sost[$i][$k];
echo '<br>';
}
}
}
}
}
быдло-код пока в режиме начального написания.
$sost - матрица, указанная в примере
составляется мутем математич манипуляций с переменной $stack2
На каждом шаге я нахожу в массиве sost (например, матрица 4х4) минимальный элемент, беру его координаты, объединяю их в массиве staсk2 и удаляю строку и столбец с одним из номеров, и получаю в sost матрицу уже 3х3, и так же использую её.
Вообще это кластеризация методом ближайшего соседа, и я пытаюсь сделать его реализацию на php