私の機能の何が問題になっていますか?numpyとnetworkxを使用して最短パスを見つける

カルロスエドゥアルドコーパス

そこで、networkxを使用して最短パスを計算するコードを作成しています。numpyを使用して3D配列を作成し、次のように最短経路を計算しました。

import numpy as np
import networkx as nx

arr = np.random.randint(1, 100, size = (2, 5, 5)) #3D array

for i in arr:
    graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
    path = nx.shortest_path(graph, 0, 3, weight = 'weight')
    print(path)

2つの行列を使用しているので、次の出力が得られました。

[0, 1, 3] #path1
[0, 3]    #path2

その後、次のようにまったく同じことを行う関数を作成することにしました。

import numpy as np
import networkx as nx

arr = np.random.randint(1, 100, size = (2, 5, 5)) #3D array


def shortest(prices):

    for i in arr:
        graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
        path = nx.shortest_path(graph, 0, 3, weight = 'weight')
        return path

print(shortest(arr))

そして私は次の出力を得ました:

[0, 1, 3] #same as path 1

そして、私がこのように「リターンパス」の位置を変更した場合:

def shortest(precios):

    for i in arr:
        graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
        path = nx.shortest_path(graph, 0, 3, weight = 'weight')
    return path

print(shortest(arr))

次の出力が得られました:

[0, 3] #same as path 2

関数を使用して、同じ出力で2つのパスを取得できません。ここで何が起こっているのか分かりますか?私はこのトピックに少し慣れていないので、Pythonで関数を使用する練習をしていたので、何が問題なのかを確認するのに役立つことを望んでいました。ありがとうございました!

プルーン

これは、とは何の関係もありませんnetworkxかをnumpyこれは単純な制御フローです。「最短パス」ループは、提供されたグラフを反復処理し、それぞれの最短パスを見つけます。

非機能バージョンは、見つかった各パスを出力しますが、一度に1つしか処理しません。見つかったソリューションを集約するためのプロビジョニングを関数に作成しなかったため、一度に1つしか取得できません...つまり、関数の場合、取得できるのは1つだけです。

このコードは、最初の解決策が見つかるとすぐに返されます。

for i in arr:
    graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
    path = nx.shortest_path(graph, 0, 3, weight = 'weight')
    return path   # The function ends as soon as it gets here: you get only the first solution.

このコードはすべての解決策を見つけますが、次の解決策が見つかるとすぐにそれぞれを破棄します。

for i in arr:
    graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
    path = nx.shortest_path(graph, 0, 3, weight = 'weight')
    # You just deleted the previous solution, and replaced it with another.

return path

上書きしなかったの最後のソリューションだけなので、これは最後のソリューションのみを返します。どういうわけかソリューションを蓄積して一緒に返すか、関数の使用法を変更する必要があります。例えば:

all_path = []
for i in arr:
    graph = nx.from_numpy_array(i, create_using = nx.DiGraph)
    all_path.append( nx.shortest_path(graph, 0, 3, weight = 'weight') )

return all_path

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

円と線の衝突の解決策を見つけるための私の関数の何が問題になっているでしょうか?

分類Dev

Laravel:同じモデルを2つ取得していますが、異なるはずです。私の発見の何が問題になっていますか?

分類Dev

HCFを見つけるためのこのCコードの何が問題になっていますか?

分類Dev

C ++:数の最大の素数を見つけるプログラム、私のコードの何が問題になっていますか?

分類Dev

私のプログラムの何が問題になっていますか?nからmまでの素数のリストを見つけようとしています

分類Dev

最初の親を見つけるjQueryコードの何が問題になっていますか?

分類Dev

LINQのデフォルトの空が機能していないので、何が問題なのかを見つける必要があります

分類Dev

数値の桁を見つけるためのDoubleを使用したModuloの何が問題になっていますか?

分類Dev

私の主な機能の何が問題になっていますか

分類Dev

私の機能の何が問題になっていますか

分類Dev

私のlisp機能の何が問題になっていますか?

分類Dev

(パスワード)機能の何が問題になっていますか?

分類Dev

私の条件文の何が問題になっていますか?母音を抜こうとしています

分類Dev

ループがどのように機能するかを学ぼうとしていますが、何が問題になっていますか?

分類Dev

jQueryがHTMLを解析しないという私のHTMLの何が問題になっていますか?

分類Dev

私の機能の何が問題になっていますか?すべての一般的な文字を検索し、それらを1つの文字列に連結する関数があります

分類Dev

\ n機能しませんか?私のコードの何が問題になっていますか?

分類Dev

gotoを使用することの何が問題になっていますか?

分類Dev

sudoを使用することの何が問題になっていますか?

分類Dev

Python:文字列で見つかった最後のX文字を印刷するにはどうすればよいですか?常に機能するとは限らないコードの何が問題になっていますか?

分類Dev

私の機能の何が問題になっている可能性がありますか?

分類Dev

このコードが機能しないことはわかっていますが、見つけたコードが機能するのはなぜですか?何が間違ったコードを間違っているのですか?

分類Dev

私の相対パスの何が問題になっていますか?

分類Dev

ベクトル セットの実装を使用している私のスキームの何が問題になっていますか?

分類Dev

私の方法の何が問題になっていますか?加算が機能せず、常に0を出力します

分類Dev

二分木の高さを見つけると、コードの何が問題になっていますか?

分類Dev

二分木の高さを見つけると、コードの何が問題になっていますか?

分類Dev

Java:BFSを使用して最短パスを見つける際の問題

分類Dev

比較機能の何が問題になっていますか?

Related 関連記事

  1. 1

    円と線の衝突の解決策を見つけるための私の関数の何が問題になっているでしょうか?

  2. 2

    Laravel:同じモデルを2つ取得していますが、異なるはずです。私の発見の何が問題になっていますか?

  3. 3

    HCFを見つけるためのこのCコードの何が問題になっていますか?

  4. 4

    C ++:数の最大の素数を見つけるプログラム、私のコードの何が問題になっていますか?

  5. 5

    私のプログラムの何が問題になっていますか?nからmまでの素数のリストを見つけようとしています

  6. 6

    最初の親を見つけるjQueryコードの何が問題になっていますか?

  7. 7

    LINQのデフォルトの空が機能していないので、何が問題なのかを見つける必要があります

  8. 8

    数値の桁を見つけるためのDoubleを使用したModuloの何が問題になっていますか?

  9. 9

    私の主な機能の何が問題になっていますか

  10. 10

    私の機能の何が問題になっていますか

  11. 11

    私のlisp機能の何が問題になっていますか?

  12. 12

    (パスワード)機能の何が問題になっていますか?

  13. 13

    私の条件文の何が問題になっていますか?母音を抜こうとしています

  14. 14

    ループがどのように機能するかを学ぼうとしていますが、何が問題になっていますか?

  15. 15

    jQueryがHTMLを解析しないという私のHTMLの何が問題になっていますか?

  16. 16

    私の機能の何が問題になっていますか?すべての一般的な文字を検索し、それらを1つの文字列に連結する関数があります

  17. 17

    \ n機能しませんか?私のコードの何が問題になっていますか?

  18. 18

    gotoを使用することの何が問題になっていますか?

  19. 19

    sudoを使用することの何が問題になっていますか?

  20. 20

    Python:文字列で見つかった最後のX文字を印刷するにはどうすればよいですか?常に機能するとは限らないコードの何が問題になっていますか?

  21. 21

    私の機能の何が問題になっている可能性がありますか?

  22. 22

    このコードが機能しないことはわかっていますが、見つけたコードが機能するのはなぜですか?何が間違ったコードを間違っているのですか?

  23. 23

    私の相対パスの何が問題になっていますか?

  24. 24

    ベクトル セットの実装を使用している私のスキームの何が問題になっていますか?

  25. 25

    私の方法の何が問題になっていますか?加算が機能せず、常に0を出力します

  26. 26

    二分木の高さを見つけると、コードの何が問題になっていますか?

  27. 27

    二分木の高さを見つけると、コードの何が問題になっていますか?

  28. 28

    Java:BFSを使用して最短パスを見つける際の問題

  29. 29

    比較機能の何が問題になっていますか?

ホットタグ

アーカイブ