2009-05-07 8 views
4

私はイベント時間+プレゼンテーションテーブルに基づいてクリティカルパスを計算するVB6プログラム(笑いのため)を書こうとしています。私は生徒にそれをチェックメカニズムとして使うことを願っています。アクティビティネットワークを作成せずにすべてを行う私は各活動のための開始と終了の出来事を得たら、私はこれをすべてやり遂げることができてうれしいです。ネットワークを作成せずにイベントを割り当てるにはどうすればよいですか。私が思いつくすべてのものは、特定の例のために働き、次に別のもののために働かない。私はもっ​​と一般的なアルゴリズムが必要で、それは私を精神的に運転しています。助けて!クリティカルパスの分析

私はプロのプログラマーではありません。私は余裕があるときに教材を作成します。簡単な英語は本当に感謝しています。

+0

問題についてもう少し詳しく説明できますか? – BobbyShaftoe

+0

1.生徒は、アクティビティ名、依存関係、アクティビティ期間を入力します。私のプログラムは、カスケードチャート、プロジェクトの継続時間、そしてクリティカルパスを(多かれ少なかれ)生成します。これは機能します。各アクティビティの開始と終了のイベントを知ると、私のプログラムは、最も早いイベントと最新のイベントの時間を計算し、合計が浮動し、重大なイベントやアクティビティを与えます。これは機能します。私の問題は、優先順位テーブルに基づいて、各アクティビティの開始イベントと終了イベントにラベルを付けることです。私は特定の例(ダミーの有無にかかわらず)でこれを行うことができますが、一般的な方法ではできません。それはできますか? –

答えて

5

わかりましたので、あなたは、私が

→ B
B → C

などのようなペアのテーブルであることを要する優先度テーブルを持って、活動{A、Bについて、 C}。それぞれのアクティビティには、期間と(おそらく)配信期間があるので、Aは3日かかり、Bは2をとるなどのことが分かります。これは「AがCの前に終わらなければならないBの前に終わらなければならない」と解釈される。

右か?

ここで明らかになるのは、アクティビティと矢印のグラフを作成することです。実際、発生率リスト形式のグラフが基本的にあります。クリティカルな部分は、最大の重み(最大の合計)のパスです。これはlongest-path problemであり、あなたのグラフが循環していないと仮定すると(どちらにしても悪い)、topological sortまたはtransitive closureで解決できます。

+1

多かれ少なかれ。私の問題は、典型的なAレベルの質問には、EがB、C、Dに依存し、FがDとEに依存するように、複数の依存関係を持つテーブルがあることです。私が夢中になっているのは、これらの複数の相互接続です。私は今日、トポロジカル・ソートというアイディアを見つけました。私はそれについて多くを知らないが、行く方法ですか? (私はサイクルを避けながらO.K.) –

+1

うん、そうだろう。リンクはあなたにいくつかの助けを与えるはずです。グラフは非周期的でなければなりません。そうしないと、最終的にはそれ自身に依存するアクティビティが発生する可能性があるからです。 Topoのソートと推移的閉包は本当に同形です。一方は行列(エッジ行列)上にあり、他方はグラフモデルを使用する。質問の中に何らかのサンプルデータを入れておきます。 (heh)私はVB6を*すべて*で知りませんが、私はあなたに役立ついくつかの擬似コードを与えることができます。 –

+0

それは私が本当に欲しいものです。私は誇りに思っています。私はそれを自分で分類したいが、私はヒントが必要だ。私は明日何をしようとしているのかをお見せしましょう。ある意味では、それは私を悩ますコードではなく、基本的なアプローチです。自分でコードを磨くことができます(試してみてください)。あなたが提案したリンクのいくつかをチェックアウトします。 Ta! –