溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java編程中的分治算法怎么用

發布時間:2021-09-17 09:43:29 來源:億速云 閱讀:204 作者:柒染 欄目:web開發

Java編程中的分治算法怎么用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

  1. 分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個復雜的問題分成兩個或更多相同或相似的子問題,再把子問題分成更小的子問題…直到最后子問題可以簡單的直接求解,原問題解即是子問題的解的合并。這個技巧是很多高效算法的基礎,如排序算法(快速排序、歸并排序),傅里葉變換(快速傅里葉變換)...

  2. 分支算法可以求解的一些經典文圖:二分搜索、大整數乘法、棋盤覆蓋、合并排序、快速排序、線性時間選擇、最接近點對問題、循環賽日程表、漢諾塔。

分治算法的基本步驟

分治法在每一層遞歸上都有三個步驟:

  1. 分解:將原有問題分解為若干個規模較小,相互獨立,與原問題形式相同的子問題

  2. 解決:若干子問題規模較小而容易被解決則直接解決,否則遞歸地解決各個子問題

  3. 合并:將各個子問題的解合并為原問題的解

分治算法設計模式

分治(Divide-and-Conquer(P))算法模式如下圖,

Java編程中的分治算法怎么用

其中|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片黃金圓盤,把圓盤從下面開始按大小順序重新擺放在另一根柱子上,并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個盤。

Java編程中的分治算法怎么用

思路分析:

  1. 如果是有一個盤,A->C

  2. 如果是 n>=2  盤情況,我們總是可以看成兩個盤,一個是最下邊的一個盤,一個是上面的所有盤:先把最上面的所有盤從A移動到B,把最下面的一個盤從A移動到C,把B塔的所有盤從B移動到C。

package com.xie.algorithm;  public class Hanoitower {     public static void main(String[] args) {         hanoiTower(3, 'A', 'B', 'C');         /**          * 第1個盤從A->C          * 第2個盤從A->B          * 第1個盤從C->B          * 第3個盤從A->C          * 第1個盤從B->A          * 第2個盤從B->C          * 第1個盤從A->C          */     }      public static void hanoiTower(int num, char a, char b, char c) {         //如果只有一個盤         if (num == 1) {             System.out.println("第1個盤從" + a + "->" + c);         } else {             //如果是 n>=2 盤情況,我們總是可以看成兩個盤,一個是最下邊的一個盤,一個是上面的所有盤             //1.先把最上面的盤從A移動到B,移動過程會使用到C             hanoiTower(num - 1, a, c, b);             //2.把最下面的一個盤從A移動到C             System.out.println("第" + num + "個盤從" + a + "->" + c);             //3.把B塔的所有盤從B移動到C,移動過程使用到A塔             hanoiTower(num - 1, b, a, c);         }     } }

關于Java編程中的分治算法怎么用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女