//貪心演算法(又稱貪婪演算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,演算法得到的是在某種意義上的區域性最優解
//1建立數學模型來描述問題
//2把求解的問題分成若干個子問題
//3對每個子問題求解,得到子問題的區域性最優解
//4把子問題的解區域性最優解合成原來解問題的乙個解
//a、不能保證解是最佳的。因為貪心演算法總是從區域性出發,並沒從整體考慮
//b、貪心演算法一般用來解決求最大或最小解
//c、貪心演算法只能確定某些問題的可行性範圍
//o(n2)
private a: set= new set();
private b: set= new set();
private c: set= new set();
private d: set= new set();
//需要包含的內容。
private all: set= new set();
//被檢查的資料。
private check: array= new array();
this.all.add(1); this.all.add(2); this.all.add(3); this.all.add(4);
this.all.add(5); this.all.add(6); this.all.add(7); this.all.add(8);
this.a.add(1); this.a.add(2); this.a.add(3); this.a.add(4);
this.b.add(4); this.b.add(5); this.b.add(6); this.b.add(7); this.b.add(8);
this.c.add(8); this.c.add(7); this.c.add(1); this.c.add(2);
this.d.add(3); this.d.add(4); this.d.add(5); this.d.add(6);
this.check.push(this.a); this.check.push(this.b); this.check.push(this.c); this.check.push(this.d);
this.greedy(this.all);
console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
this.printset(this.all, "列印結果:");
private greedy(alltemp: set) else { //b的數量比較多
a.foreach((item, index) => {
if (b.has(item)) {
temp.add(item);
return temp;
private printset(s: set, tips: string) {
s.foreach((item, index) => { //遍歷 效率不高,因為每乙個都遍歷。
console.log(tips, index, ":", item);
經典貪心演算法 貪心演算法概述
貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...
演算法 貪心演算法
把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...
演算法 貪心演算法
集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...