① 對於同一個問題,為什麼用粒子群演算法和遺傳演算法得出的結果不一樣這是什麼原因了
正常的,說明其中某個演算法還需要改進,得到的解不夠理想,而另一種演算法得到的是近似最優解。
② 一個問題的解決往往可以有多種不同的演算法
頭文件mainwindow.h(文中的粗體為需要添加的內容):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QAbstractButton>
#include <QPushButton>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private:
QPushButton *Clear;
private slots:
void on_buttonBox_clicked(QAbstractButton *button);
};
#endif // MAINWINDOW_H
③ 問題 : 結合不同演算法技術解決某個實際問題的一個實例。 (就是一個問題中同時要用到多個演算法技術,舉
在3D圖形運算里 需要計算平移 角度 映射 等等一系列坐標相關運算
這里就要用到矩陣 歐拉角 四元數來進行操作了 因為矩陣不能做插值運算 而四元數可以有很好的插值效果 四元數不好理解不便於輸入 當然矩陣也是 矩陣需要輸入9個值(3X3矩陣) 而歐拉角 只需要3個值 不過歐拉角在計算旋轉時會有萬向鎖問題 所以需要用矩陣或四元數來計算。
④ 計算機同一個問題只能用一個演算法對嗎
不是。
每個問題都有多個演算法。只是演算法是泛意的,並不是一定是計算機上可以運行的。如果可以在計算機上運行的,都是可以用數學建模的,那麼數學模型出來了,演算法也就有了。演算法有了,具體用什麼語言就看樓主自己了,可以寫成標准C,也可以用C++實現,也可以用JAVA實現,比如說排序,任何一種計算機語言都能實現。
⑤ 同一個問題演算法不同,結果必不同
一個演算法最多可以包含三種邏輯結構的任意組合,故A不正確;
同一問題的演算法不同,結果必然相同,故B不對;
演算法既能用圖形方式來表示,也能用自然語言來表示,故C不正確;
一個演算法可以含有上述三種邏輯結構的任意組合,故D正確.
故選D.
⑥ 對於同一個問題可採用不同的演算法去解決,但不同的演算法通常具有相同的效率這句話錯在哪 急!
不同的演算法不會有相同的效率。
就比如11x12=132
第一種演算法,兩邊一拉中間相加。像左1 右2 中間1+2=3
再舉個例子11x55 605
第二種演算法,歸整零相加。像10x12+12
⑦ 幾種常用的演算法簡介
1、窮舉法窮舉法是最基本的演算法設計策略,其思想是列舉出問題所有的可能解,逐一進行判別,找出滿足條件的解。
窮舉法的運用關鍵在於解決兩個問題:
在運用窮舉法時,容易出現的問題是可能解過多,導致演算法效率很低,這就需要對列舉可能解的方法進行優化。
以題1041--純素數問題為例,從1000到9999都可以看作是可能解,可以通過對所有這些可能解逐一進行判別,找出其中的純素數,但只要稍作分析,就會發現其實可以大幅度地降低可能解的范圍。根據題意易知,個位只可能是3、5、7,再根據題意可知,可以在3、5、7的基礎上,先找出所有的二位純素數,再在二位純素數基礎上找出三位純素數,最後在三位純素數的基礎上找出所有的四位純素數。
2、分治法分治法也是應用非常廣泛的一種演算法設計策略,其思想是將問題分解為若乾子問題,從而可以遞歸地求解各子問題,再綜合出問題的解。
分治法的運用關鍵在於解決三個問題:
我們熟知的如漢諾塔問題、折半查找演算法、快速排序演算法等都是分治法運用的典型案例。
以題1045--Square Coins為例,先對題意進行分析,可設一個函數f(m, n)等於用面值不超過n2的貨幣構成總值為m的方案數,則容易推導出:
f(m, n) = f(m-0*n*n, n-1)+f(m-1*n*n, n-1)+f(m-2*n*n, n-1)+...+f(m-k*n*n, n-1)
這里的k是幣值為n2的貨幣最多可以用多少枚,即k=m/(n*n)。
也很容易分析出,f(m, 1) = f(1, n) = 1
對於這樣的題目,一旦分析出了遞推公式,程序就非常好寫了。所以在動手開始寫程序之前,分析工作做得越徹底,邏輯描述越准確、簡潔,寫起程序來就會越容易。
3、動態規劃法
動態規劃法多用來計算最優問題,動態規劃法與分治法的基本思想是一致的,但處理的手法不同。動態規劃法在運用時,要先對問題的分治規律進行分析,找出終結子問題,以及子問題向父問題歸納的規則,而演算法則直接從終結子問題開始求解,逐層向上歸納,直到歸納出原問題的解。
動態規劃法多用於在分治過程中,子問題可能重復出現的情況,在這種情況下,如果按照常規的分治法,自上向下分治求解,則重復出現的子問題就會被重復地求解,從而增大了冗餘計算量,降低了求解效率。而採用動態規劃法,自底向上求解,每個子問題只計算一次,就可以避免這種重復的求解了。
動態規劃法還有另外一種實現形式,即備忘錄法。備忘錄的基本思想是設立一個稱為備忘錄的容器,記錄已經求得解的子問題及其解。仍然採用與分治法相同的自上向下分治求解的策略,只是對每一個分解出的子問題,先在備忘錄中查找該子問題,如果備忘錄中已經存在該子問題,則不須再求解,可以從備忘錄中直接得到解,否則,對子問題遞歸求解,且每求得一個子問題的解,都將子問題及解存入備忘錄中。
例如,在題1045--Square Coins中,可以採用分治法求解,也可以採用動態規劃法求解,即從f(m, 1)和f(1, n)出發,逐層向上計算,直到求得f(m, n)。
在競賽中,動態規劃和備忘錄的思想還可以有另一種用法。有些題目中的可能問題數是有限的,而在一次運行中可能需要計算多個測試用例,可以採用備忘錄的方法,預先將所有的問題的解記錄下來,然後輸入一個測試用例,就查備忘錄,直接找到答案輸出。這在各問題之間存在父子關系的情況下,會更有效。例如,在題1045--Square Coins中,題目中已經指出了最大的目標幣值不超過300,也就是說問題數只有300個,而且各問題的計算中存在重疊的子問題,可以採用動態規劃法,將所有問題的解先全部計算出來,再依次輸入測試用例數據,並直接輸出答案。
4、回溯法回溯法是基於問題狀態樹搜索的求解法,其可適用范圍很廣。從某種角度上說,可以把回溯法看作是優化了的窮舉法。回溯法的基本思想是逐步構造問題的可能解,一邊構造,一邊用約束條件進行判別,一旦發現已經不可能構造出滿足條件的解了,則退回上一步構造過程,重新進行構造。這個退回的過程,就稱之為回溯。
回溯法在運用時,要解決的關鍵問題在於:
回溯法的經典案例也很多,例如全排列問題、N後問題等。
5、貪心法貪心法也是求解最優問題的常用演算法策略,利用貪心法策略所設計的演算法,通常效率較高,演算法簡單。貪心法的基本思想是對問題做出目前看來最好的選擇,即貪心選擇,並使問題轉化為規模更小的子問題。如此迭代,直到子問題可以直接求解。
基於貪心法的經典演算法例如:哈夫曼演算法、最小生成樹演算法、最短路徑演算法等。
⑧ 採用准確優化技術和啟發式優化技術解決一個問題會存在什麼不同
採用准確優化技術和啟發式優化技術解決一個問題會存在的不同之處:
①確定性演算法和隨機性演算法是目前求解優化問題的方法。隨機性演算法一般是對社會行為和自然現象的模擬,具有對優化函數的解析性質要求低的特點,甚至對無顯示解析表達式的問題也可以求解,能較好解決優化中的雜訊、不可微、高維等問題。
②啟發式演算法作為隨機性演算法的一種,其良好的應用更加快了人們對各種優化方法的探索腳步。 近些年來不斷有學者將分形應用於優化中來,試圖運用分形思想來處理復雜的優化問題。
③其中,分形演算法通過對可行域的分形分割來尋優,是一種新穎的確定性演算法,但其局限性較大,只適用於低維簡單的問題,對於當今社會中高維復雜問題則幾乎無能為力,也使得該演算法的影響力微乎其微。
④啟發式技術是基於特徵值掃描技術上的升級,與傳統反病毒特徵值掃描技術相比,優點在於對未知病毒的防禦.是特徵值識別技術質的飛躍。
(8)求解同一個問題所採用的不同演算法擴展閱讀
啟發式:簡化虛擬機和簡化行為判斷引擎的結合 Heuristic(啟發式技術=啟發式掃描+啟發式監控) 重點在於特徵值識別技術上的更新、解決單一特徵碼比對的缺陷.目的不在於檢測所有的未知病毒,只是對特徵值掃描技術的補充.主要針對:木馬、間諜、後門、下載者、已知病毒(PE病毒)的變種。
一、啟發式發展方向
現代啟發式演算法的研究,在理論方面還處於不斷發展中,新思想和新方法仍不斷出現。分析目前的現狀和發展方向,其發展方向有如下幾個方面:
①整理歸納分散的研究成果,建立統一的演算法體系結構。
②在現有的數學方法(模式定理、編碼策略、馬爾可夫鏈理論、維數分析理論、復制遺傳演算法理論、二次動力系統理論、傅立葉分析理論、分離函數理論、Walsh函數分析理論)的基礎上尋求新的數學工具。
③開發新的混合式演算法及開展現有演算法改進方面的研究。
④研究高效並行或分布式優化演算法。
二、啟發式演算法演算法機制特點
現代啟發式演算法在優化機制方面存在一定的差異,但在優化流程上卻具有較大的相似性,均是一種「鄰域搜索」結構。演算法都是從一個(一組)初始解出發,在演算法的關鍵參數的控制下通過鄰域函數產生若干鄰域解,按准則(確定性、概率性或混沌方式)更新當前狀態,而後按關鍵參數修改准則調整關鍵參數,一直優化到最優結果。
⑨ 一個問題的解決往往可以有多種不同的演算法
這個是肯定的,條條大路通羅馬,一個問題肯定有多個不同的解決方法,演算法也是一樣。只不過分為合適的和不合適的。
⑩ 設求解同一問題有四種演算法,這四種演算法各自的時間復雜度分別為O(n^2), O(nlogn), O(2^n),O(n),
常用的時間復雜度所耗費的時間從小到大依次是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2^n)<O(n! )<O(n^n)