基本的に、次のようなシナリオがあります。
vertex --- vertex* --- vertex
ただし、頂点*はパスのこの時点で可変数の頂点を持つことができ、結果として
vertex --- vertex1 --- vertex
vertex --- vertex2 --- vertex
vertex --- vertexN --- vertex
N
この頂点にたどり着くまで、何が起こるかわかりません。このノードを初めてトラバースすると、パスのこの時点でこの頂点のインスタンスがいくつあるかを任意の関数で判断できます。
プロパティとして記録N
するだけですか、それとも値が増分された中央の頂点を持つ追加N
の数のパスを作成しますか?
実際の例としては、(親ディレクトリを開くまで) 不明な数のフォルダーを持つファイル ディレクトリがあり、各フォルダーには 1 つのファイルが含まれており、各ファイル パスをトラバースする必要があります。
アップデート:
これは私が期待するものです:
(最初のトラバーサル、特別なプロパティを持つ頂点に遭遇 *)
A --- X* --- B
親 A と子 B に接続された同じ X 頂点の追加インスタンスを生成します。
A --- X1 --- B
\--- X2 --/
\-- X3 -/
また
A --- X1 --- B
A --- X2 --- B
A --- X3 --- B
これで、トラバーサルが次のように行われます
A, X1, B
A, X2, B
A, X3, B
頂点インスタンスはX
互いにまったく同じであり、インデックス整数を持っています。インスタンスの数は、最初の初期トラバーサル ( ) によって決まりますA, X*, B
。X* は、3 または 50 または 100 の追加インスタンスを生成する場合があります。
ストレージについては、このインデックス値を X* に格納し、最大整数に達するまで毎回インクリメントすることを意味していN
ました。したがって、上記の例では、開始インデックスが 1 で最大値が 3 になります。これにより、中間に追加の頂点を挿入して A と B の両方に接続する必要がなくなります。ただし、これが生成されたすべてのパスをトラバースする必要がある私の場合に最適です。