-
マトリックスをスパイラルで印刷する
このアルゴリズムは、配列要素をらせん状に印刷するために使用されます。最初に最初の行から始めて、コンテンツ全体を印刷し、次に最後の列に続いて印刷し、最後の行というように、要素をらせん状に印刷します。 このアルゴリズムの時間計算量はO(MN)、Mは行数、Nは列数です。 入力と出力 Input: The matrix: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 &nbs
-
アルゴリズムと複雑さ
アルゴリズム アルゴリズムは有限の命令セットであり、従うと特定のタスクを実行します。言語固有ではありません。指示を表すために任意の言語と記号を使用できます。 アルゴリズムの基準 入力: ゼロ個以上の入力がアルゴリズムに外部から供給されます。 出力: 少なくとも1つの出力がアルゴリズムによって生成されます。 明確性: 各指示は明確で明確です。 有限性: アルゴリズムでは、すべての異なるケースで有限のステップ数の後に終了します。 有効性: 各指示は非常に基本的である必要があるため、それらの指示の目的は私たちにとって非常に明確でなければなりません。 アルゴリズムの分析 アルゴリズム
-
漸近解析
漸近解析 漸近解析を使用すると、入力サイズに基づいてアルゴリズムのパフォーマンスについてのアイデアを得ることができます。正確な実行時間を計算する必要はありませんが、実行時間と入力サイズの関係を見つける必要があります。入力のサイズが大きくなるときは、実行時間を追跡する必要があります。 スペースの複雑さについては、アルゴリズムを完了するためにメインメモリ内のどのくらいのスペースが占有されているかという関係または関数を取得することが目標です。 漸近的振る舞い 関数の場合f(n) 漸近的な振る舞いは、nが大きくなるにつれてf(n)が大きくなることです。小さい入力値は考慮されません。私たちの仕事は
-
漸近表記
漸近表記 漸近表記は、漸近分析のアルゴリズムの複雑さを表すために使用されます。これらの表記は、複雑さを表す数学的ツールです。一般的に使用される表記法は3つあります。 ビッグオー表記 Big-Oh(O)表記は、関数f(n)の上限を定数係数内に与えます。 f(n)=O(g(n))と書くと、正の定数n0とcがあり、n0の右側で、f(n)は常にc * g(n)以下になります。 O(g(n))={f(n):すべてのn≥n0に対して、0≤f(n)≤cg(n)となる正の定数cおよびn0が存在します} ビッグオメガ表記 ビッグオメガ(Ω)表記は、関数f(n)の下限を一定の係数内に与えます。
-
償却分析
償却分析 この分析は、時折の操作が非常に遅い場合に使用されますが、非常に頻繁に実行される操作のほとんどは高速です。ハッシュテーブル、互いに素なセットなどの償却分析が必要なデータ構造 ハッシュテーブルでは、ほとんどの場合、検索時間の複雑さはO(1)ですが、O(n)操作を実行することもあります。ほとんどの場合、ハッシュテーブルで要素を検索または挿入する場合、タスクは一定時間かかりますが、衝突が発生すると、衝突を解決するためにO(n)回の操作が必要になります。 集計方法 総コストを見つけるために集計方法が使用されます。大量のデータを追加する場合は、この式で償却原価を見つける必要があります。
-
「スペースコンプレキシティ」とは何ですか?
スペースの複雑さ スペースの複雑さは、アルゴリズムを完全に実行して結果を生成するために、アルゴリズム(アルゴリズムの入力値を含む)によって使用されるメモリの量です。 アルゴリズムを実行するには、メインメモリにロードする必要があることがわかっています。メモリはさまざまな形式で使用できます: 変数(これには定数値と一時値が含まれます) プログラム命令 実行 補助スペース 補助スペースは、実行中にアルゴリズムによって使用される追加スペースまたは一時スペースです。 プログラム実行中のメモリ使用量 命令スペースは、コンパイルされた命令をメモリに保存するために使用されます。 環境スタックは、モ
-
多項式時間近似スキーム
多項式時間近似スキーム 0-1ナップサック問題や部分和問題などのNP完全問題の多項式時間解を見つけることができます。これらの問題は現実の世界で非常に人気があるため、これらの問題を処理する方法がいくつかあるはずです。 多項式時間近似スキーム(PTAS)は、最適化問題のアルゴリズムを近似するタイプです。 0-1ナップサック問題には、疑似多項式解がありますが、値が大きい場合、解は実行可能ではありません。次に、PTASソリューションが必要です。 グラフ彩色、K-Center問題など、いくつかのNP完全問題には、既知の多項式時間解がありません。 PTAS 0を取り、近似するために最小化(1 +ε)
-
ハッシュ関数とハッシュテーブル
ハッシュは、ハッシュ関数と呼ばれる数学関数を使用して、テキストまたは数値のリストから値を生成するプロセスです。数値の数値または英数字のキーを使用するハッシュ関数は多数あります。さまざまなハッシュ関数を以下に示します。 ハッシュ関数 以下はハッシュ関数の一部です- 除算方法 これは、ハッシュ関数を作成する最も簡単な方法です。ハッシュ関数は次のように記述できます- h(k) = k mod n ここで、h(k)は、キー値kをハッシュテーブルnのサイズで除算して得られるハッシュ値です。キーがより均一に分散されるようにするため、nは素数であることが最善です。 除算法の例は次のとおりです- k=
-
辞書式順序で最小の文字列回転
文字列が指定されていると考えてみましょう。文字列は文字のシーケンスであることがわかります。辞書式順序は、文字列を辞書式順序で変換するための文字列の回転です。 解決策は単純です。指定された文字列をそれ自体と連結するだけで、別の配列に文字列のすべての回転が格納されます。その後、配列を昇順で並べ替えると、最小値が最終結果になります。 入力と出力 Input: The String “BCAAFAABCD” Output: Rotated String: “AABCDBCAAF” アルゴリズム minStrRotation(str) 入力- 指定された文
-
ナットとボルトの問題
さまざまなナットのリストとボルトの別のリストが表示されます。私たちの仕事は、与えられたリストからナットとボルトの正しい一致を見つけ、一致したときにそのナットをボルトに割り当てることです。 この問題は、クイックソート手法によって解決されます。ボルトの最後の要素をピボットとして使用して、ナットリストを再配置し、ボルトがピボット要素であるナットの最終位置を取得します。ナットリストを分割した後、選択したナットを使用してボルトリストを分割できます。左右のサブリストに対して同じタスクを実行して、すべての一致を取得します。 入力と出力 Input: The lists of locks and keys.
-
ハッシュマップを使用したロックとキーの問題
さまざまなロックのリストと別のキーのリストが表示されます。私たちのタスクは、指定されたリストからロックとキーの正しい一致を見つけ、正しいときにそのキーにロックを割り当てることです。 このアプローチでは、すべてのロックをトラバースしてハッシュマップを作成し、その後、各キーがハッシュマップで検索されます。キーが一致すると、それは有効なキーとしてマークされ、ロックが割り当てられます。 入力と出力 Input: The lists of locks and keys. lock = { ),@,*,^,(,%, !,$,&,#} key = { !, (, #, %, ), ^, &
-
指定された文字列のすべての順列を出力します
特定の文字列のすべての順列を印刷することは、バックトラックの問題の例です。サブ問題を解決するためにサブストリングのサイズを縮小し、次に再びバックトラックしてそのセクションから別の順列を取得します。 たとえば、文字列がABCの場合、すべての順列はABC、ACB、BAC、BCA、CAB、CBAになります。 このアルゴリズムの複雑さはO(n!)です。それは非常に複雑です。文字列のサイズが大きくなると、タスクの完了に時間がかかります。 入力と出力 Input: A string “ABC” Output: All permutations of ABC is: ABC AC
-
数値のパリティチェック
数値のパリティは、その数値に相当する2進数に存在する1の数値に基づいています。現在の1のカウントが奇数の場合、奇数のパリティを返します。偶数の1の場合、偶数のパリティを返します。 コンピュータのメモリ内の数値は2進数で格納されていることがわかっているので、数値を簡単にシフトできます。この場合、ビットをシフトすることにより、指定された数値に相当する2進数に存在する1の数値をカウントします。 入力と出力 Input: A number: 5 Binary equivalent is (101) Output: Parity of 5 is Odd. アルゴリズム finParity(n) 入力
-
貯水池サンプリング
貯水池のサンプリングはランダム化されたアルゴリズムです。このアルゴリズムでは、n個の異なるアイテムを含むリストからk個のアイテムが選択されます。 サイズkのリザーバーとして配列を作成することで、これを解決できます。次に、メインリストからランダムに1つの要素を選択し、そのアイテムをリザーバーリストに配置します。一度選択した項目は、次回は選択されません。しかし、彼のアプローチは効果的ではありません。この方法で複雑さを増すことができます。 リザーバーリストで、リストから最初のk個のアイテムをコピーし、リストの(k + 1)番目の番号から1つずつコピーして、現在選択されているアイテムをインデックス
-
巡回セールスマン問題
1人の営業担当者が都市にいて、リストされている他のすべての都市を訪問する必要があります。ある都市から別の都市への移動費用も提供されます。すべての都市を一度訪れて、最初の都市に戻るためのコストが最小になるルートを見つけます。 この場合、グラフは完全である必要があります。これにより、営業担当者は任意の都市から任意の都市に直接移動できます。 ここで、最小加重ハミルトン閉路を見つける必要があります。 入力と出力 Input: Cost matrix of the matrix. 0 20 42 25 30 20 0 30 34 15 42 30 0 10 10
-
ツェラーのアルゴリズムを使用して平日を見つける
ツェラーのアルゴリズムは、特定の日付から平日を見つけるために使用されます。ツェラーのアルゴリズムを使用して平日を見つける式は次のとおりです。 式にはいくつかの変数が含まれています。彼らは- d −日付の日。 m:月コードです。 3月から12月までは3から12、1月は13、2月は14です。1月または2月を考慮すると、指定された年は1減少します。 y −年の最後の2桁 c −年の最初の2桁 w −平日。 0の場合は土曜日、6の場合は金曜日を意味します 入力と出力 Input: The day, month and the year: 4, 1, 1997 Output: It w
-
文字列を英数字順に並べ替える
指定された文字列のリストは、英数字順または辞書順で並べ替えられます。 Apple、Book、Aimのように、Aim、Apple、Bookのように並べ替えられます。数字がある場合は、アルファベットの文字列の前に配置できます。 入力と出力 Input: A list of strings: Ball Apple Data Area 517 April Man 506 Output: Strings after sort: 506 517 Apple April Area Ball Data Man アルゴリズム sortStr(strArr, n) 入力: すべての文字列のリスト、要素の数。
-
ハノイの塔問題
ハノイの塔はパズルの問題です。 3つのスタンドとn枚のディスクがあります。最初に、ディスクは最初のスタンドに配置されます。ディスクを3番目のスタンドまたは目的のスタンドに配置する必要があります。2番目のスタンドまたは補助スタンドは補助スタンドとして使用できます。 ただし、従うべきルールがいくつかあります。 移動ごとに1枚のディスクしか転送できません。 スタンドからピックアップできるのは一番上のディスクのみです。 小さいディスクの上部に大きいディスクは配置されません。 この問題は、再帰によって簡単に解決できます。最初に、再帰を使用して、一番上の(n-1)ディスクをソースから補助スタンドに配
-
最小限のコストでn本のロープを接続する
指定された長さのロープがN本あります。私たちは彼らとつながる必要があります。 1本のロープを他のロープに接続するコストは、それらの長さの合計です。私たちの目標は、最小限のコストでN本のロープを接続することです。 この問題は、ヒープツリーを使用して解決できます。最小ヒープを作成して、最初にすべての異なる長さを挿入し、次に最小ヒープと2番目の最小アイテムを最小ヒープから削除し、それらを接続して、ヒープツリーに再度挿入します。ヒープが1つの要素のみを保持する場合、プロセスを停止して、最小限のコストで接続されたロープを取得できます。 入力と出力 Input: The lengths of the r
-
ローマ数字の数
ローマ数字は位取り記数ではありません。いくつかの数字は、ローマ数字で数字を形成するために一緒に配置されます。たとえば、75という数字は75 =50 + 10 + 10 + 5と表すことができるため、ローマ数字はLXXVです。 この問題では、1つの数値が10進形式で提供されます。私たちのタスクは、それをローマ数字の文字列に変換することです。 このように、さまざまな記号とその値があります。 I IV V IX X XL L XC C CD D CM M MMMM V ’ 1 4 5