青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

回溯算法(1):八皇后問題

#include "stdafx.h"

/*
算法系列---回溯算法
引言
尋找問題的解的一種可靠的方法是首先列出所有候選解,然后依次檢查每一個(gè),在檢查完所有或部分候選解后,即可找到所需要的解。理論上,當(dāng)候選解數(shù)量有限并且通過檢查所有或部分候選解能夠得到所需解時(shí),上述方法是可行的。不過,在實(shí)際應(yīng)用中,很少使用這種方法,因?yàn)楹蜻x解的數(shù)量通常都非常大(比如指數(shù)級(jí),甚至是大數(shù)階乘),即便采用最快的計(jì)算機(jī)也只能解決規(guī)模很小的問題。對(duì)候選解進(jìn)行系統(tǒng)檢查的方法有多種,其中回溯和分枝定界法是比較常用的兩種方法。按照這兩種方法對(duì)候選解進(jìn)行系統(tǒng)檢查通常會(huì)使問題的求解時(shí)間大大減少(無論對(duì)于最壞情形還是對(duì)于一般情形)。事實(shí)上,這些方法可以使我們避免對(duì)很大的候選解集合進(jìn)行檢查,同時(shí)能夠保證算法運(yùn)行結(jié)束時(shí)可以找到所需要的解。因此,這些方法通常能夠用來求解規(guī)模很大的問題。
算法思想
回溯(backtracking)是一種系統(tǒng)地搜索問題解答的方法。為了實(shí)現(xiàn)回溯,首先需要為問題定義一個(gè)解空間(solution space),這個(gè)空間必須至少包含問題的一個(gè)解(可能是最優(yōu)的)。
下一步是組織解空間以便它能被容易地搜索。典型的組織方法是圖(迷宮問題)或樹(N皇后問題)。
一旦定義了解空間的組織方法,這個(gè)空間即可按深度優(yōu)先的方法從開始節(jié)點(diǎn)進(jìn)行搜索。

回溯方法的步驟如下:
1) 定義一個(gè)解空間,它包含問題的解。
2) 用適于搜索的方式組織該空間。
3) 用深度優(yōu)先法搜索該空間,利用限界函數(shù)避免移動(dòng)到不可能產(chǎn)生解的子空間。
回溯算法的一個(gè)有趣的特性是在搜索執(zhí)行的同時(shí)產(chǎn)生解空間。在搜索期間的任何時(shí)刻,僅保留從開始節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的路徑。因此,回溯算法的空間需求為O(從開始節(jié)點(diǎn)起最長(zhǎng)路徑的長(zhǎng)度)。這個(gè)特性非常重要,因?yàn)榻饪臻g的大小通常是最長(zhǎng)路徑長(zhǎng)度的指數(shù)或階乘。所以如果要存儲(chǔ)全部解空間的話,再多的空間也不夠用。

算法應(yīng)用
回溯算法的求解過程實(shí)質(zhì)上是一個(gè)先序遍歷一棵"狀態(tài)樹"的過程,只是這棵樹不是遍歷前預(yù)先建立的,而是隱含在遍歷過程中<<數(shù)據(jù)結(jié)構(gòu)>>(嚴(yán)蔚敏).

回溯算法的基本思想是:從一條路往前走,能進(jìn)則進(jìn),不能進(jìn)則退回來,換一條路再試。

回溯法是一個(gè)既帶有系統(tǒng)性又帶有跳躍性的搜索算法。它在包含問題的所有解的解空間樹中,按照深度優(yōu)先的策略,從根結(jié)點(diǎn)出發(fā)搜索解的空間樹。算法搜索至解的空間樹的任一結(jié)點(diǎn)時(shí),總是先判斷該結(jié)點(diǎn)是否肯定不包含問題的解。如果肯定不包含,則跳過對(duì)以該結(jié)點(diǎn)為根的子樹的系統(tǒng)搜索,逐層向其祖先結(jié)點(diǎn)回溯。否則,進(jìn)入該子樹,繼續(xù)按深度優(yōu)先的策略進(jìn)行搜索。回溯法在用來求問題的所有解時(shí),要回溯到根,且根結(jié)點(diǎn)的所有子樹都已被搜索遍才結(jié)束。而回溯法在用來求問題的任一解時(shí),只要搜索到問題的一個(gè)解就可以結(jié)束。這種以深度優(yōu)先的方式系統(tǒng)地搜索問題的解的算法稱為回溯法,它適用于解一些組合數(shù)較大的問題。

算法框架:

1、問題的解空間:應(yīng)用回溯法解問題時(shí),首先應(yīng)明確定義問題的解空間。問題的解空間應(yīng)至少包含一個(gè)(最優(yōu))解。

2、回溯法的基本思想:確定了解空間的組織結(jié)構(gòu)后,回溯法就從開始結(jié)點(diǎn)(根結(jié)點(diǎn))出發(fā),以深度優(yōu)先的方式搜索整個(gè)解空間,這個(gè)開始結(jié)點(diǎn)就成為一個(gè)活結(jié)點(diǎn),同時(shí)也成為當(dāng)前的擴(kuò)展結(jié)點(diǎn)。在當(dāng)前的擴(kuò)展結(jié)點(diǎn)處,搜索向縱深方向移至一個(gè)新結(jié)點(diǎn),這個(gè)新結(jié)點(diǎn)就成為一個(gè)新的活結(jié)點(diǎn),并成為當(dāng)前擴(kuò)展結(jié)點(diǎn)。如果在當(dāng)前的擴(kuò)展結(jié)點(diǎn)處不能再向縱深方向移動(dòng),則當(dāng)前擴(kuò)展結(jié)點(diǎn)就成為死結(jié)點(diǎn)。換句話說,這個(gè)結(jié)點(diǎn)不再是一個(gè)活結(jié)點(diǎn)。此時(shí),應(yīng)往回移動(dòng)(回溯)至最近的一個(gè)活結(jié)點(diǎn)處,并使這個(gè)活結(jié)點(diǎn)成為當(dāng)前的擴(kuò)展結(jié)點(diǎn)。回溯法即以這種工作方式遞歸地在解空間中搜索,直至找到所要求的解或解空間中已沒有活結(jié)點(diǎn)時(shí)為止。

運(yùn)用回溯法解題通常包含以下三個(gè)步驟:

(1)針對(duì)所給問題,定義問題的解空間;

(2)確定易于搜索的解空間結(jié)構(gòu);

(3)以深度優(yōu)先的方式搜索解空間,并且在搜索過程中用剪枝函數(shù)避免無效搜索。

3、遞歸回溯:由于回溯法是對(duì)解的空間的深度優(yōu)先搜索,因此在一般情況下可用遞歸函數(shù)來實(shí)現(xiàn)回溯法如下:

void backtrace(int i)
{
    for (int j=下界;j<上界;j++)
    {
        matrix[i] = j;

        //可行{滿足限界函數(shù)和約束條件}
        if ( 可行())
        {
            //置值
            if (i>n)
            {
                //中止搜索并輸出結(jié)果;
            }
            backtrace(i+1);
        }
    }
}

說明:

i是遞歸深度;

n是深度控制,即解空間樹的高度;

可行性判斷有兩方面的內(nèi)容:

①不滿約束條件則剪去相應(yīng)子樹;

②若限界函數(shù)越界,也剪去相應(yīng)子樹;

③兩者均滿足則進(jìn)入下一層;

搜索:全面訪問所有可能的情況,分為兩種:不考慮給定問題的特有性質(zhì),按事先設(shè)好的順序,依次運(yùn)用規(guī)則,即盲目搜索的方法;另一種則考慮問題給定的特有性質(zhì),選用合適的規(guī)則,提高搜索的效率,即啟發(fā)式的搜索。

*/


//八皇后問題
//解空間
static int matirx[8= {0}; 
static int count = 0;  

void display()  
{  
    
int row;  
    
int col;  

    printf(
"\r\n======%02d=======\n",count);  
    
for(row = 0; row <8; row ++)
    {  
        
for(col = 0; col < matirx[row]; col ++)  
            printf(
"");  

        printf(
"");  

        
for(col = matirx[row] + 1; col < 8; col ++)  
            printf(
"");  

        printf(
"\n");  
    }
}  

bool place(int row, int col)  
{  
    
int prev;  
    
int data;  

    
for(prev = 0; prev < row; prev ++){  
        data 
= matirx[prev];

        
//同一列
        if(col == data)  
            
return false

        
//左斜線
        if ((prev-row) == (col - data) )
            
return false

        
//右斜線
        if((row - prev) == (col - data))  
            
return false;

    }  
    
return true;  
}  

void queen(int row)
{
    
int col;

    
for(col=0;col<8;col++
    {
        
if(place(row,col)) 
        {
            matirx[row]
=col;
            
if(row>=7
            {
                count
++,display();
                
//matirx[row]=0;
                return;
            }

            queen(row
+1);
            
//matirx[row]=0;
        }
    }
}


int main(void)
{
    queen(
0);
    system(
"pause");
    
return 0;
}

posted on 2013-03-20 15:37 天下 閱讀(1506) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 算法

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合电影一区| 国产精品久久久999| 亚洲第一精品在线| 久久成人在线| 欧美一区二区三区在线免费观看 | 亚洲第一中文字幕在线观看| 老司机精品视频一区二区三区| 久久亚洲综合色| 裸体素人女欧美日韩| 亚洲电影第1页| 99re亚洲国产精品| 亚洲欧美国产精品专区久久| 性做久久久久久免费观看欧美| 久久成人精品无人区| 久久精品盗摄| 欧美精品免费在线| 欧美色综合网| 狠狠色综合色综合网络| 亚洲人成欧美中文字幕| 亚洲婷婷国产精品电影人久久| 性色一区二区三区| 免费黄网站欧美| 亚洲激情网站| 亚洲欧美在线观看| 欧美va亚洲va国产综合| 国产女主播在线一区二区| 亚洲国产精品毛片| 亚洲男人的天堂在线aⅴ视频| 久久九九99| 日韩视频永久免费| 久久久久久午夜| 欧美午夜a级限制福利片| 狠色狠色综合久久| 亚洲视频久久| 欧美99久久| 午夜性色一区二区三区免费视频| 欧美电影免费| 亚洲伊人久久综合| 欧美精品成人| 一区二区三区在线不卡| 亚洲一区中文| 亚洲国产精品福利| 久久精品国产第一区二区三区最新章节| 欧美激情一区二区三区在线| 国内精品久久久久久久影视蜜臀| 在线视频中文亚洲| 欧美韩日一区| 久久久久国产一区二区三区| 欧美午夜欧美| 一本色道久久| 欧美成人精品在线| 久久超碰97中文字幕| 国产精品夜夜夜| 亚洲一区免费观看| 亚洲精品在线观看免费| 欧美不卡高清| 亚洲人成人一区二区三区| 蜜桃av噜噜一区| 久久夜色精品国产噜噜av| 国产综合色产| 久久久999精品| 欧美一级黄色录像| 欧美在线观看一区二区| 国产伦精品一区二区三区| 亚洲香蕉成视频在线观看| 91久久精品国产91久久性色tv| 美女主播视频一区| 亚洲区欧美区| 亚洲日本欧美在线| 欧美日韩成人一区二区| 亚洲视频一二区| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲日韩欧美视频| 亚洲国产第一| 欧美日韩成人综合天天影院| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲激情一区| 欧美午夜a级限制福利片| 亚洲免费视频在线观看| 亚洲欧美国内爽妇网| 国内外成人免费激情在线视频网站 | 欧美在线播放视频| 黄色一区二区三区四区| 欧美成人性生活| 欧美日韩免费观看一区| 性感少妇一区| 久久综合伊人77777蜜臀| 99re8这里有精品热视频免费| 在线视频欧美日韩精品| 国内自拍视频一区二区三区| 亚洲国产精品视频| 国产精品theporn| 久久久精品tv| 欧美精品自拍| 久久蜜桃精品| 欧美精品九九| 久久精品在这里| 欧美日韩成人综合在线一区二区| 欧美影院在线播放| 欧美国产视频在线观看| 午夜欧美视频| 欧美成人精品在线视频| 性做久久久久久久免费看| 麻豆成人av| 欧美一区二区精品久久911| 久久夜色精品国产欧美乱极品| 在线亚洲欧美视频| 另类酷文…触手系列精品集v1小说| 中文日韩在线视频| 另类av一区二区| 久久久久久亚洲综合影院红桃| 欧美伦理在线观看| 美日韩丰满少妇在线观看| 欧美四级伦理在线| 亚洲电影免费| 黄色精品网站| 久久综合精品一区| 欧美日韩专区在线| 亚洲电影免费观看高清完整版在线 | 亚洲女优在线| 亚洲国产小视频| 久久大综合网| 性做久久久久久| 欧美午夜免费| 亚洲精品国产拍免费91在线| 亚洲国产合集| 久久精品首页| 久久久久久久一区二区| 国产精品热久久久久夜色精品三区 | av成人福利| 最新日韩在线视频| 久久躁狠狠躁夜夜爽| 另类酷文…触手系列精品集v1小说| 国产精品视频免费观看| 中日韩男男gay无套| 正在播放欧美视频| 欧美日韩成人一区二区| 亚洲电影第1页| 日韩视频在线免费| 欧美大片91| 亚洲国产日韩欧美| 日韩五码在线| 欧美日韩国产成人在线91| 亚洲精一区二区三区| 亚洲网站在线播放| 欧美日韩第一区日日骚| 亚洲理论在线| 亚洲在线观看视频网站| 国产精品日韩在线| 亚洲影视在线播放| 久久成人免费网| 国产亚洲女人久久久久毛片| 欧美在线观看www| 欧美激情第五页| 日韩一级不卡| 欧美日韩美女在线| 亚洲欧美国产精品专区久久| 久久精品日韩| 亚洲国产精品久久久久久女王| 奶水喷射视频一区| 亚洲伦伦在线| 久久精彩免费视频| 亚洲黄色一区二区三区| 欧美日韩国产成人| 亚洲永久免费观看| 久久综合狠狠综合久久综青草| 亚洲电影有码| 欧美日韩免费一区二区三区视频| 亚洲一区二区三区国产| 久久久国产成人精品| 亚洲欧洲一级| 国产精品精品视频| 久久精品视频99| 亚洲欧洲日本在线| 香蕉乱码成人久久天堂爱免费| 狠狠久久综合婷婷不卡| 欧美日韩国产一区二区三区| 欧美一区二区视频免费观看 | 欧美激情视频给我| 亚洲一区二区毛片| 欧美激情网友自拍| 亚洲一级一区| 亚洲精品网站在线播放gif| 午夜在线视频观看日韩17c| 在线观看日韩| 国产精品豆花视频| 久久一区二区三区av| 在线视频日本亚洲性| 亚洲大胆人体视频| 欧美一区二区网站| 亚洲天堂av高清| 91久久精品日日躁夜夜躁国产| 国产精品播放| 欧美国产视频日韩| 久久久精品日韩欧美| 亚洲女女女同性video| 亚洲精品在线一区二区| 裸体女人亚洲精品一区| 久久久精品动漫| 午夜精品一区二区三区在线播放|