Dzień dobry.
Cały kod jest długi, dlatego wklejam tylko wycinek. Macierz wierzchołków jest to macierz, która jeżeli wierzchołek jest połączony z innym przypisuje na skrzyżowaniu losową wartość z przedziału, mówiącą o maksymalnej przepustowości tego połączenia. Dodaje element do tablicy tras jeżeli znajdzie połączenie pomiędzy wierzchołkami. Tablica tras ma finalnie wypisać wszystkie możliwe trasy pomiędzy wierzchołkami w grafie spójnym nieskierowany. Stan, który jest pokazany poniżej pokazuje, że znalazł na wierzchołka nr 4 połączenia z nr 0 i nr 3. Teraz chciałbym, żeby poszukał połączeń dla wierzchołków 0 i 3 oraz zapisywał to to tablicy tras jak poniżej. Tu akurat sytuacja tylko dla wierzchołka nr 0, ponieważ nie potrafię jeszcze tego iterować.
Kod dobrze wyszukuje, z którymi się łączy, ale źle zapisuje wyniki do tablicy tras, jak poniżej.
print(tablica_tras)
iteracja_tras=0
iteracja_macierz=0
iteracja_while=0
nr_wierzcholka_sprawdzanego_w_tabblicy_tras=1
while iteracja_while < liczba_wierzcholkow:
if (macierz_wierzcholkow[tablica_tras[iteracja_tras][nr_wierzcholka_sprawdzanego_w_tabblicy_tras],iteracja_macierz] > 0):
tablica_tras.append(tablica_tras[iteracja_tras])
tablica_tras[len(tablica_tras)-1].append(iteracja_macierz)
iteracja_while = iteracja_while + 1
iteracja_macierz = iteracja_macierz + 1
else:
iteracja_while = iteracja_while + 1
iteracja_macierz = iteracja_macierz + 1
print(tablica_tras)
w wyniku działania kodu j.w. dostaję
[[4, 0], [4, 3]] -> to jest pierwotna tablica tras
[[4, 0, 1, 2, 4], [4, 3], [4, 0, 1, 2, 4], [4, 0, 1, 2, 4], [4, 0, 1, 2, 4]] -> to jest tablica wynikowa
nie rozumiem dlaczego modyfikuje np. element tablica_tras[0] i dlaczego nie wygląda to tak jak bym chciał, żeby po prostu skopiowało tablica_tras[0] x 3, wstawiło na koniec tablicy oraz dodało do każdego wierzchołek, z którym się łączy. Ja sobie to wyobrażałem tak jak poniżej.
[[4, 0], [4, 3], [4, 0, 1], [4, 0, 2], [4, 0, 4]]
Poniżej skrócony problem, możliwy do uruchomienia, ale tożsamy z moim problemem:
tablica_tras=[[4, 0], [4, 3]]
print(tablica_tras)
iteracja_tras=0
iteracja_macierz=0
iteracja_while=0
nr_wierzcholka_sprawdzanego_w_tabblicy_tras=1
while iteracja_while < 3:
tablica_tras.append(tablica_tras[iteracja_tras])
tablica_tras[len(tablica_tras)-1].append(iteracja_macierz)
iteracja_while = iteracja_while + 1
iteracja_macierz = iteracja_macierz + 1
print(tablica_tras)
ponieważ wynik tego, że modyfikuje wszystkie elementy tablicy
[[4, 0], [4, 3]]
[[4, 0, 0, 1, 2], [4, 3], [4, 0, 0, 1, 2], [4, 0, 0, 1, 2], [4, 0, 0, 1, 2]]
Męczę się z tym od dłuższego czasu, czy ktoś mógłby mi pokazać gdzie popełniam błąd? Z góry dziękuję.