窮舉法 exhaustive method

窮舉法的方法就是遍歷所有的可能解炫刷。

我用iphone 6 測(cè)試了窮舉法的效率:采用的是幻方(magic square)謎題解法:

試將1~9這9個(gè)不同整數(shù)填入一個(gè)3x3的表格蛙卤,使得每行,每列以及每條對(duì)角線(xiàn)上的數(shù)字之和相同。

? ? ?
? ? ?
? ? ?

使用窮舉法,那么可能性有 9! = 362880 種可能。

**測(cè)試結(jié)果: 需要只用76秒珍促。 **

使用的代碼為:

private let MAGIC_SQUARE = 3;
    private let beginTime = Date.init().timeIntervalSince1970;
    
    override func viewDidLoad() {
        super.viewDidLoad()

        let result = Array<Int>.init();
        var possibility = Array<Int>.init();
        
        for index in 0..<(MAGIC_SQUARE * MAGIC_SQUARE)
        {
            possibility.append(index)
        }
        
        
        print("beginTime is \(beginTime)")
        
        methodOfExhuastion(result: result, possibility: possibility)
    }
    
    func methodOfExhuastion(result:Array<Int>, possibility:Array<Int>) -> Void {
        
        if 0 >= possibility.count {
            print("result is \(result)")
            
            let nowTime = Date.init().timeIntervalSince1970
            
            let usingTime = nowTime - beginTime;
            
            print("usingTime is \(usingTime)")
            
            return;
        }
        
        for index in 0..<possibility.count
        {
            let number = possibility[index];
            var tempResult = Array<Int>.init(result);
            tempResult.append(number);
            
            var tempPossibility = Array<Int>.init(possibility);
            tempPossibility.remove(at: index);
            
            methodOfExhuastion(result: tempResult, possibility: tempPossibility);
        }
    }

當(dāng)幻方為2 x 2時(shí),測(cè)試結(jié)果: 0.05秒剩愧。

當(dāng)幻方為4 x 4時(shí)猪叙,測(cè)試結(jié)果: ?仁卷?穴翩??

執(zhí)行了1189秒時(shí)锦积,才遍歷到了第9位芒帕。

當(dāng)幻方為5 x 5時(shí),這個(gè)時(shí)候就會(huì)出現(xiàn)計(jì)算機(jī)已經(jīng)無(wú)能為力丰介。

是的你沒(méi)看錯(cuò)背蟆,((5 x 5)x (5 x 5))鉴分! = 1.5 x 10000000000000000000000000(25個(gè)0).如果是每秒計(jì)算100 000億次的計(jì)算機(jī),需要使用49 000年才能完成這項(xiàng)任務(wù)带膀。你可以計(jì)算下志珍。 當(dāng)我看到這個(gè)結(jié)果時(shí),我也是被震驚了垛叨。在等待4 x 4的計(jì)算時(shí)碴裙,我也已經(jīng)覺(jué)得數(shù)據(jù)量大的概念是什么了。
16! = 2.0 x 10000000000000(13個(gè)0)点额。

SO, 盡量少用窮舉法莺琳』估猓可以嘗試回溯法(backtracking)。

算法設(shè)計(jì):
窮舉搜索 -> 回溯法 -> 減而治之 -> 分而治之 -> 變而治之 -> 貪心法 -> 迭代改進(jìn) -> 動(dòng)態(tài)規(guī)劃

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惭等,一起剝皮案震驚了整個(gè)濱河市珍手,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辞做,老刑警劉巖琳要,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秤茅,居然都是意外死亡稚补,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)框喳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)课幕,“玉大人,你說(shuō)我怎么就攤上這事五垮≌Ь” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵放仗,是天一觀的道長(zhǎng)润绎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)诞挨,這世上最難降的妖魔是什么莉撇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮惶傻,結(jié)果婚禮上稼钩,老公的妹妹穿的比我還像新娘。我一直安慰自己达罗,他們只是感情好坝撑,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布静秆。 她就那樣靜靜地躺著,像睡著了一般巡李。 火紅的嫁衣襯著肌膚如雪抚笔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天侨拦,我揣著相機(jī)與錄音殊橙,去河邊找鬼。 笑死狱从,一個(gè)胖子當(dāng)著我的面吹牛膨蛮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播季研,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼敞葛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了与涡?” 一聲冷哼從身側(cè)響起惹谐,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驼卖,沒(méi)想到半個(gè)月后氨肌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酌畜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年怎囚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桥胞。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桩了,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出埠戳,到底是詐尸還是另有隱情井誉,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布整胃,位于F島的核電站颗圣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏屁使。R本人自食惡果不足惜在岂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛮寂。 院中可真熱鬧蔽午,春花似錦、人聲如沸酬蹋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至骄恶,卻和暖如春食铐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背僧鲁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工虐呻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寞秃。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓斟叼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親春寿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朗涩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)堂淡,斷路器,智...
    卡卡羅2017閱讀 134,696評(píng)論 18 139
  • 回溯算法 回溯法:也稱(chēng)為試探法扒腕,它并不考慮問(wèn)題規(guī)模的大小绢淀,而是從問(wèn)題的最明顯的最小規(guī)模開(kāi)始逐步求解出可能的答案,并...
    fredal閱讀 13,669評(píng)論 0 89
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)瘾腰。 張土汪:刷leetcod...
    土汪閱讀 12,748評(píng)論 0 33
  • 多重選擇擺在眼前的時(shí)候皆的,經(jīng)過(guò)慎重思考,層層篩選蹋盆,最終選擇最佳的方案费薄,這就是決策樹(shù)。
    李向姿閱讀 290評(píng)論 0 0
  • 一切都是最好的安排栖雾。 今天從考場(chǎng)出來(lái)那一刻楞抡,我釋然了!折騰了這么久析藕,越來(lái)越清楚自己要的是撒子召廷!別人在乎的是你的結(jié)果...
    Namaste_洛桑real閱讀 404評(píng)論 0 0