Java プログラミング スキル - データ構造とアルゴリズム「分割統治アルゴリズム」

Java プログラミング スキル - データ構造とアルゴリズム「分割統治アルゴリズム」

[[398991]]

アルゴリズムの紹介

  1. 分割統治アルゴリズムは非常に重要です。文字通りの説明は「分割統治」であり、複雑な問題を 2 つ以上の同一または類似のサブ問題に分割し、サブ問題をさらに小さなサブ問題に分割することを意味します。最後のサブ問題が単純かつ直接的に解決されるまで、元の問題の解決策はサブ問題に対する解決策の組み合わせになります。この手法は、ソートアルゴリズム (クイックソート、マージソート)、フーリエ変換 (高速フーリエ変換) など、多くの効率的なアルゴリズムの基礎となります。
  2. 分岐アルゴリズムで解決できるいくつかの古典的なテキストとグラフ: バイナリ検索、大きな整数の乗算、チェス盤カバー、マージソート、クイックソート、線形時間選択、最近接ペア問題、ラウンドロビンスケジュール、ハノイの塔。

分割統治アルゴリズムの基本手順

分割統治法では、再帰の各レベルに 3 つのステップがあります。

  1. 分解: 元の問題を、元の問題と同じ形式のいくつかのより小さな独立したサブ問題に分解する
  2. 解決策: 一部のサブ問題が小さく簡単に解決できる場合は、それらを直接解決します。そうでない場合は、各サブ問題を再帰的に解決します。
  3. マージ: 各サブ問題の解決策を元の問題の解決策にマージします。

分割統治アルゴリズム設計パターン

分割統治 (P) アルゴリズム モデルは次のとおりです。

ここで、|P| は問題 P の規模を表し、n0 は閾値です。これは、問題 p の規模が n0 を超えない場合、問題をそれ以上分解せずに簡単に直接解決できることを意味します。 ADHOC(P) は、分割統治アルゴリズムの基本的なサブアルゴリズムであり、小規模な問題 P を直接解決するために使用されます。したがって、P のサイズが n0 を超えない場合は、ADHOC(P) が直接使用され、解決されます。アルゴリズム MERGE(y1,y2,…yk) は、分割統治法のマージ サブアルゴリズムであり、P のサブ問題 P1、P2、…Pk の対応するソリューション y1、y2、…yk を P のソリューションにマージするために使用されます。

分割統治アルゴリズムの実践 - ハノイの塔

柱の上に、64枚の金色の円盤を下から上へ、大きさの順に並べ、次に別の柱の上に、下から大きさの順に並べ直します。大きな円盤を小さな円盤の上に置くことはできず、3本の柱間では一度に1枚の円盤しか移動できないという規定があります。

思考分析:

  1. ディスクが1つの場合、A->C
  2. n>=2 のディスクの場合、常に 2 つのディスクとして表示できます。1 つは下部のディスク、もう 1 つはその上のすべてのディスクです。まず、上部のディスクをすべて A から B に移動し、下部のディスクを A から C に移動し、タワー B のすべてのディスクを B から C に移動します。
  1. パッケージ com.xie.algorithm;
  2.  
  3. パブリッククラスHanoiTower {
  4. 公共 静的void main(String[] args) {
  5. ハノイタワー(3, 'A' , 'B' , 'C' );
  6. /**
  7. * 最初のディスクはA->Cです
  8. * 2番目のディスクはA->Bです
  9. * 最初のディスクはC->Bです
  10. * 3番目のディスクはA->Cです
  11. * 最初のディスクはB->Aです
  12. * 2番目のディスクはB->Cです
  13. * 最初のディスクはA->Cです
  14. */
  15. }
  16.  
  17. 公共 静的void hanoiTower( int num, char a, char b, char c) {
  18. //ディスクが1つしかない場合
  19. 数値 == 1 の場合
  20. System.out.println ( "" +a+ "->" +cからの最初のディスク);
  21. }それ以外{
  22. //n>=2 ディスクの場合、常に 2 つのディスクとして表示され、1 つは一番下のディスク、もう 1 つはその上のすべてのディスクです。
  23. //1. まず一番上のディスクをAからBに移動します。移動プロセスではCを使用します。
  24. ハノイタワー(数値 - 1, a, c, b);
  25. //2. 下のディスクをAからCに移動する
  26. システム.out.println ( "the" + num + "disk from" + a + "->" + c);
  27. //3. タワーBのすべてのディスクをBからCに移動し、移動プロセスでタワーAを使用します。
  28. ハノイタワー(数値 - 1, b, a, c);
  29. }
  30. }
  31. }

【編集者のおすすめ】

  1. 仮想サーバー管理の6つのベストプラクティス
  2. 2021 年にソフトウェア開発業界を支配する 15 のテクノロジー トレンド
  3. コンピュータのインストールに必須のソフトウェア 5 つ。それぞれが他のものよりも強力で、一度使用するとそれなしでは生きていけなくなります。
  4. これは素晴らしい。これは私が今まで見たSpringCloudマイクロサービスアーキテクチャの最も詳細な説明です | 添付の面接の質問
  5. 中国の3大通信事業者はニューヨーク証券取引所から上場廃止されたことで損失を被ったのか?

<<:  5GとAI: 現在と未来の補完的なテクノロジー

>>:  新しいディープラーニングモデルがエッジデバイスに画像セグメンテーションをもたらす方法

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Deeplearning4j: JVM 向けのディープラーニングと ETL

[[410828]]この記事はWeChatの公開アカウント「Java Architecture M...

ディープラーニングはオイラー方程式を「破壊」する準備ができている

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

モノのインターネットにおけるAIの役割

[[380960]]私たちの周りのすべてのものが知的になることを考えたことはありますか?ガジェットは...

90年代以降は人工知能で年間数百万ドルを稼ぐ、Google、Microsoft、BATの給与リストが明らかに

年末には給与に関する議論が再び盛り上がる。昨日、馬化騰氏は抽選で従業員に30万元相当のテンセント株1...

世界のAIチップ投資環境が明らかに、5つのシナリオにチャンスあり

[[241691]]画像出典: Visual China AIチップ投資マップAI チップの設計は、...

ハンドルとペダルがない?アップルは2025年までに自動運転車を発売する予定

スペインの新聞「ヴァングアルディア」によると、アップルは2025年にハンドルもペダルもない自動車を発...

2020 年の予測: 今年はサイバー犯罪サービスが普及する年になるか?

業界メディアeWEEKの2020年の予測:人工知能と機械学習の「中毒」についての予測も見られ、これが...

AI as a Service: AIとクラウドコンピューティングが出会うとき

競争で優位に立つために、ますます多くの企業が自社のアプリケーション、製品、サービス、ビッグデータ分析...

2年後には「ロボット」が人間の活動の80%以上をこなすようになるのでしょうか? AIに関する専門家の見解を聞く

写真:人工知能カンファレンスフォーラム 撮影:新民晩報主任記者 劉欣 「私は生産性を変革し、新しい...

MITは、ニューラルネットワークトレーニングのブラックボックスを自動的に覗くネットワーク解剖フレームワークを提案

MIT の新しいテクノロジーは、視覚データでトレーニングされたニューラル ネットワークの内部の仕組み...

トレンドにおける危険とチャンス: 生成 AI の黄金期をどう捉えるか?

ChatGPTは今年9月末に音声チャットと画像認識機能を追加しました。テキスト駆動型と比較して、C...

西アフリカの牧畜民は飢餓危機と戦うためにAIを活用

世界銀行の支援を受けて、国際非営利団体「Action Against Hunger」は人工知能を活用...

世界モデルに関するいくつかの誤解と自動運転との統合に関する考察

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...