まず第一に、私はグラフ理論に精通しておらず、数学の知識も非常に乏しいと言わなければなりません。とにかく、分析にはグラフの概念を使用しています。
基本的に、無向グラフ (たとえば G) をサイクル (閉じたグラフ) に分解しています。私のサイクルの特徴は、それらが 2 つの頂点間を移動できる最短のサイクルであることです (サイクルであるため、開始と終了は同じですが)。私の例のグラフによると、私のサイクルは (1,4,5,1)(1,2,3,4,1)(7,9,8,7) です (長さが 3 未満のサイクルは無視します) .
編集:深さ優先検索を使用してサイクルを取得し、次に最小のサイクルを取得しました。
後で、これらのサイクルを有向パスにさらにブレーキングします。ここでは、新しいパス グラフの開始ノードと終了ノードを挿入するために、エッジ (図の赤い線) を介してサイクルを分割しました。したがって、サイクル (7,9,8,7) => 新しい有向パスは (a,9,c)(d,8,7,b) です。新しいベクターを挿入して要素を更新するだけです。グラフ理論に関連するアルゴリズムはここには含まれません。
次に、データを分析します。
上記のことをすべて行いました。だから、私の問題は、数学的な表記法で物事全体をどのように説明するかです(私が言ったような例はありません)。私は基本さえ持っていないので、これは私にとって非常に難しいです。
私はグーグルで検索しようとしましたが、自分がしたことを説明する方法をまだ見つけることができません。私がしたことはあなたには明らかだと思います。
それで、私を助けてくれませんか、どのように説明するか
- 無向グラフをサイクル (最短サイクル) に分解する
- エッジ経由のサイクル ブレークと有向パス グラフの作成 (図に示すように)
数学表記あり(グラフ理論による)
多くの著者がグラフとそのサブグラフを定義するためにさまざまな表記法と記号を使用しているのを見てきましたが、私の場合、基本が貧弱すぎて定義できません。ですから、これらのことを形式的で数学的な方法で言うのを手伝ってください。前もって感謝します。
また、アイデアを得るためにサンプル図を挿入しました。
注: 多くのコンピュータ サイエンティストがグラフ理論を使用しており、回答を得たいと考えているため、c++ タグを追加しました。