アルゴリズム仕様-データ構造の紹介
アルゴリズムは、従うと特定のタスクを実行する有限の命令セットとして定義されます。すべてのアルゴリズムは、次の基準を満たす必要があります
入力。アルゴリズムには、指定されたオブジェクトのセットから取得または収集された0個以上の入力があります。
出力。アルゴリズムには、入力と特定の関係を持つ1つ以上の出力があります。
確実性。各ステップは明確に定義する必要があります。各指示は明確で明確でなければなりません。
有限性。アルゴリズムは、常に有限のステップ数の後に終了または終了する必要があります。
効果。実行するすべての操作は、正確かつ有限の長さで実行できるように、十分に基本的である必要があります。
アルゴリズムはさまざまな方法で表現できます。
- 自然言語:英語のような自然言語を実装する
- フローチャート:アルゴリズムが小さくて単純な場合にのみ、フローチャートで示されるグラフィック表現。
- 擬似コード:この擬似コードは、あいまいさのほとんどの問題をスキップします。構文プログラミング言語に関する特別なことはありません。
例1:数値の階乗値を計算するためのアルゴリズム
Step 1: a number n is inputted Step 2: variable final is set as 1 Step 3: final<= final * n Step 4: decrease n Step 5: verify if n is equal to 0 Step 6: if n is equal to zero, goto step 8 (break out of loop) Step 7: else goto step 3 Step 8: the result final is printed
再帰的アルゴリズム
再帰的アルゴリズムはそれ自体を呼び出します。これは通常、戻り値をパラメーターとしてアルゴリズムに再度渡します。このパラメーターは入力を示し、戻り値は出力を示します。
再帰的アルゴリズムは、問題を同じ性質のサブ問題に分割する単純化の方法として定義されます。 1回の再帰の結果は、次の再帰の入力として扱われます。補充は、自己類似の方法で行われます。アルゴリズムは、より小さな入力値でそれ自体を呼び出し、これらのより小さな値で操作を実行するだけで結果を取得します。階乗のフィボナッチ数列の生成は、再帰的アルゴリズムの例として示されています。
例:再帰を使用した階乗関数の記述
intfactorialA(int n) { return n * factorialA(n-1); }
-
データ構造で式ツリーを構築するためのアルゴリズム
式ツリー 式ツリーは、リーフノードが操作される値を持ち、内部ノードがリーフノードが実行される演算子を含むツリーです。 例 4 +((7 + 9)* 2) 次のような式ツリーがあります 式ツリーを構築するためのアルゴリズム Tを式ツリーとします。 If T is not NULL: If T->data is an operand: return T.data A = solve(T.left) B = solve(T.right) --&g
-
ハーフエッジデータ構造
はじめに テンプレートパラメータまたはハーフエッジデータ構造(HalfedgeDSと略記)のHDSは、平面マップ、多面体、またはその他の方向付け可能な2次元など、頂点、エッジ、および面の入射情報を維持できるエッジ中心のデータ構造として定義されます。ランダムな次元に埋め込まれたサーフェス。各エッジは、反対方向の2つのハーフエッジに分割されます。各ハーフエッジには、1つの入射面と1つの入射頂点が格納されます。各面と各頂点に1つの入射ハーフエッジが格納されます。ハーフエッジデータ構造のバリエーションを減らすと、面のハーフエッジポインタや面の保存など、この情報の一部を削除できます。 ハーフエッジデ