亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? alpha_beta.c

?? 清華大學《人工智能導論》課程電子教案,給大家看看
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************************************
 *          程  序  說  明                                                       *
 * 功能: Alpha_Beta剪枝程序,該程序只涉及剪枝部分,不涉及博弈部分的內(nèi)容          *
 *                                                                               *
 * 說明:                                                                         *
 *     本程序?qū)崿F(xiàn)《人工智能導論》一書所介紹Alpha_Beta剪枝算法,不涉及具體的博弈  *
 *     問題,博弈樹用一個給定的樹代替。                                          *
 *     樹用文件表示,讀入內(nèi)容后建立樹結(jié)構(gòu)。                                      *
 *     文件的表示如下:                                                          *
 *                                                                               *
 *     ROOT A			//表示A是根節(jié)點                                          *
 *     A B1 B2 B3 END	//A的子節(jié)點為B1 B2 B3                                    *
 *     B1 C1 C2 END		//B1的子節(jié)點為C1 C2                                      *
 *     B2 C3 C4 C5 END	//B2的子節(jié)點為C3 C4 C5                                   *
 *     ......                                                                    *
 *     VALUE			//賦值標志,為葉節(jié)點賦估計值                             *
 *     D1 7				//D1的估計值為7                                          *
 *     D2 8				//D2的估計值為8                                          *
 *     D3 -4			//D3的估計值為-4                                         *
 *     ......                                                                    *
 *     END				//結(jié)束標志                                               *
 *                                                                               *
 *     tree1.txt和tree2.txt是兩個給定的樹文件的例子。                            *
 * 注意: 該程序盡可能用與《人工智能導論》中介紹的算法一致的思路實現(xiàn), 力求簡單明  *
 *       了, 注重算法的清晰性,而沒有考慮算法的效率問題。                        *
 *       Alpha_Beta_1.c實現(xiàn)了一個效率更高一些的算法,供參考。                    *
 *                                                                               *
 * 作者:馬少平                                                                  *
 * 單位:清華大學智能技術(shù)與系統(tǒng)國家重點實驗室                                    *
 * 時間:2004年8月15日                                                           *
 * 修改:2005年9月13日                                                           *
 *********************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define		MAX_INT	 32767		//定義最大整數(shù)
#define		MIN_INT -32768		//定義最小整數(shù)
#define		MAX			 1		//極大層節(jié)點標志
#define		MIN			 0		//極小層節(jié)點標志

//以下結(jié)構(gòu)定義了樹結(jié)構(gòu)的一個節(jié)點。
//樹結(jié)構(gòu)的表示如下:
//每個節(jié)點指向其父節(jié)點
//每個節(jié)點指向其子節(jié)點鏈表
//一個節(jié)點的所有子節(jié)點,形成一個兄弟鏈表,其父節(jié)點指向該兄弟鏈表的第一個
//節(jié)點,但是兄弟鏈表中的每個節(jié)點,都指向其父節(jié)點
struct NODE
{
	char name[10];			//節(jié)點名
	int value;				//節(jié)點的值
	int level;				//節(jié)點處在極大層,還是極小層
	struct NODE *pFrom;		//該節(jié)點的值來自于哪個子節(jié)點
	struct NODE *pFather;	//指向父節(jié)點
	struct NODE *pChildren; //指向子節(jié)點鏈表
	struct NODE *pNext;		//指向兄弟鏈表的下一個節(jié)點
};

struct NODE *NewNode(char *name, int level)
/******************************************************
 * 功能:動態(tài)產(chǎn)生一個節(jié)點,其狀態(tài)值由參數(shù)name, level  *
 *       給定。                                       *
 *                                                    *
 * 入口參數(shù):                                         *
 *   name:節(jié)點名                                     *
 *   level:節(jié)點是極大節(jié)點還是極小節(jié)點                *
 *                                                    *
 * 返回值:指向新產(chǎn)生的節(jié)點的指針,或者空間不夠時,返 *
 *         回NULL                                     *
 ******************************************************/
{
	struct NODE *pNode = NULL;
	pNode = malloc(sizeof(struct NODE));
	if (pNode == NULL) return NULL;
	strcpy(pNode->name, name);
	if (level == MAX) 
	{
		pNode->value = MIN_INT;
	}
	else 
	{
		pNode->value = MAX_INT;
	}
	pNode->level = level;
	pNode->pFrom = NULL;
	pNode->pFather = NULL;
	pNode->pChildren = NULL;
	pNode->pNext = NULL;
	return pNode;
}

struct NODE *Search(char *name, struct NODE *pTree)
/******************************************************
 * 功能:從已經(jīng)建立的樹中,查找給定名字的節(jié)點,并返回 *
 *       指向該節(jié)點的指針                             *
 *                                                    *
 * 入口參數(shù):                                         *
 *   name:節(jié)點名                                     *
 *   pTree: 指向樹根節(jié)點的指針                        *
 *                                                    *
 * 返回值:指向給定節(jié)點的指針                         *
 ******************************************************/
{
	struct NODE *pNode = NULL;
	if (pTree == NULL) return NULL;
	if (! strcmp(name, pTree->name)) return pTree;	//如果根節(jié)點就是待查找的節(jié)點,則返回該節(jié)點
	if (pNode = Search(name, pTree->pNext))	//否則從該節(jié)點的兄弟節(jié)點中遞歸查找
	{
		return pNode;	//如果找到,則返回該節(jié)點
	}
	if (pNode = Search(name, pTree->pChildren))	//否則在子節(jié)點中遞歸查找
	{
		return pNode;	//如果找到則返回該節(jié)點
	}
	return NULL;	//以上均找不到的話則返回NULL
}

struct NODE *ReadTree(FILE *pFile)
/******************************************************
 * 功能:從一個文本文件中讀入一個樹                   *
 *                                                    *
 * 入口參數(shù):                                         *
 *   pFile:文件指針                                  *
 *                                                    *
 * 返回值:返回指向樹根節(jié)點的指針,或者空間不夠時,返 *
 *         回NULL                                     *
 *                                                    *
 * 文本文件格式說明:                                 *
 *     ROOT A			//表示A是根節(jié)點               *
 *     A B1 B2 B3 END	//A的子節(jié)點為B1 B2 B3         *
 *     B1 C1 C2 END		//B1的子節(jié)點為C1 C2           *
 *     B2 C3 C4 C5 END	//B2的子節(jié)點為C3 C4 C5        *
 *     ......                                         *
 *     VALUE			//賦值標志,為葉節(jié)點賦估計值  *
 *     D1 7				//D1的估計值為7               *
 *     D2 8				//D2的估計值為8               *
 *     D3 -4			//D3的估計值為-4              *
 *     ......                                         *
 *     END				//結(jié)束標志                    *
 ******************************************************/
{
	char name[256];
	int value;
	struct NODE *pNode = NULL, *pRoot = NULL, *pFNode = NULL, *pLast = NULL;

	//在樹文件中,尋找ROOT標志
	while (!feof(pFile))
	{
		fscanf(pFile, "%s", name);
		if (feof(pFile)) return NULL;
		if (! strcmp(name, "ROOT")) break;
	}

	fscanf(pFile, "%s", name);	//得到根節(jié)點名字
	pRoot = NewNode(name, MAX);	//建立根節(jié)點
	if (pRoot == NULL) return NULL;	//如果空間不夠則返回NULL

	//讀文本文件,建立樹結(jié)構(gòu)
	while (!feof(pFile))
	{
		fscanf(pFile, "%s", name);	//name得到父節(jié)點名字
		if (feof(pFile)) return NULL;
		if (! strcmp(name, "VALUE")) break;
		pFNode = Search(name, pRoot);	//得到父節(jié)點在樹中的指針
		if (pFNode == NULL) return NULL;	//如果樹中不存在該節(jié)點則返回NULL

		pLast = NULL;

		//讀子節(jié)點,建立父子關(guān)系和兄弟關(guān)系
		while (!feof(pFile))
		{
			fscanf(pFile, "%s", name);	//得到子節(jié)點名
			if (feof(pFile)) return NULL;
			if (! strcmp(name, "END")) break;
			pNode = NewNode(name, !pFNode->level);	//建立子節(jié)點
			if (pNode == NULL) return NULL;	//空間不夠用時返回NULL

			if (pLast == NULL)	//如果是第一個子節(jié)點,其父節(jié)點指向該節(jié)點
			{
				pFNode->pChildren = pNode;
			}
			else
			{
				pLast->pNext = pNode;	//否則將該節(jié)點鏈接到兄弟鏈表中
			}
			pLast = pNode;
			pNode->pFather = pFNode;	//設(shè)置該節(jié)點的父節(jié)點
		}
	}

	//為葉節(jié)點賦初始估計值
	while (!feof(pFile))
	{
		fscanf(pFile, "%s", name);	        //得到葉節(jié)點名
		if (feof(pFile)) return NULL;
		if (! strcmp(name, "END")) break;	//END為結(jié)束標志
		fscanf(pFile, "%d", &value);	    //得到葉節(jié)點的初始估計值
		if (feof(pFile)) return NULL;
		pNode = Search(name, pRoot);	    //從樹中得到該節(jié)點的指針
		if (pNode == NULL) return NULL;	    //如果樹中沒有該節(jié)點,則返回NULL
		pNode->value = value;	            //為該節(jié)點賦初始估計值
	}

	return pRoot;	//返回樹根節(jié)點
}

void PrintTree(struct NODE *pRoot)
/******************************************************
 * 功能:顯示一個樹                                   *
 *                                                    *
 * 入口參數(shù):                                         *
 *   pTree: 指向樹根節(jié)點的指針                        *
 *                                                    *
 * 返回值:無                                         *
 * 說明:顯示格式如下(舉例):                         *
 * A:                                                 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产人久久人人人人爽| jlzzjlzz欧美大全| 亚洲777理论| 一级特黄大欧美久久久| 亚洲精品视频一区二区| 国产精品国产自产拍高清av| 国产亚洲女人久久久久毛片| 国产亚洲欧美一级| 亚洲婷婷综合色高清在线| 最新国产成人在线观看| 中文字幕中文在线不卡住| 亚洲天堂久久久久久久| 一区二区三区高清不卡| 婷婷久久综合九色国产成人| 老司机免费视频一区二区| 国产黄色精品网站| 色噜噜狠狠色综合欧洲selulu| 日本高清视频一区二区| 欧美一级二级三级蜜桃| 国产视频视频一区| 一二三区精品视频| 免费成人在线播放| 成人免费看片app下载| 欧美午夜精品久久久久久孕妇 | 337p粉嫩大胆噜噜噜噜噜91av| 欧美精品一区二区不卡| 国产精品久久久久久久浪潮网站| 亚洲五月六月丁香激情| 久久成人18免费观看| 色综合天天性综合| 日韩欧美国产电影| 亚洲视频综合在线| 久久国产精品99久久人人澡| 波多野结衣亚洲一区| 91麻豆精品国产91久久久使用方法 | 久久久久久久久久久电影| 国产精品久久久久久久久果冻传媒| 亚洲小说欧美激情另类| 国产精品1024| 7777精品伊人久久久大香线蕉的 | 欧美剧情电影在线观看完整版免费励志电影| 91精品久久久久久久久99蜜臂| 国产色产综合色产在线视频| 亚洲3atv精品一区二区三区| 99国产精品久久久久久久久久久| 91精品国产91久久久久久一区二区 | 不卡一区二区三区四区| 7777精品久久久大香线蕉| 国产精品久久毛片a| 日本伊人精品一区二区三区观看方式 | 国产在线观看免费一区| 7777精品伊人久久久大香线蕉超级流畅| 中文在线资源观看网站视频免费不卡| 午夜精品福利一区二区三区av| 成人免费高清在线观看| 久久久久久免费网| 精品一区二区三区免费| 91精品在线观看入口| 亚洲第一激情av| 91视频在线看| 亚洲欧洲国产日韩| 懂色av一区二区夜夜嗨| 国产亚洲综合av| 极品少妇xxxx精品少妇偷拍| 欧美日韩国产另类不卡| 午夜亚洲福利老司机| 欧美中文字幕亚洲一区二区va在线 | 久久精品视频免费| 亚洲国产aⅴ成人精品无吗| 色香色香欲天天天影视综合网| 国产日本欧美一区二区| 国产成人免费xxxxxxxx| 久久欧美中文字幕| 国产成人免费av在线| 中文字幕va一区二区三区| 国产成人在线电影| 国产片一区二区三区| 国产成人自拍高清视频在线免费播放| 精品成a人在线观看| 久久se这里有精品| 久久久久国产精品人| 国产丶欧美丶日本不卡视频| 欧美国产乱子伦 | 欧美日韩中文字幕一区| 亚洲午夜视频在线| 日韩一区二区三区观看| 精品一区二区三区免费视频| 久久人人爽人人爽| 97久久精品人人做人人爽 | 777久久久精品| 狠狠色狠狠色综合系列| 国产欧美日韩一区二区三区在线观看| 风间由美一区二区av101| 亚洲久草在线视频| 欧美男女性生活在线直播观看| 麻豆精品国产91久久久久久| 国产日韩精品视频一区| 色婷婷久久久亚洲一区二区三区 | 国产区在线观看成人精品| 99国产精品视频免费观看| 午夜av一区二区| 日韩欧美资源站| 在线视频一区二区三区| 日本亚洲一区二区| 国产目拍亚洲精品99久久精品| 99国产精品一区| 全部av―极品视觉盛宴亚洲| 久久久久97国产精华液好用吗| 色婷婷综合激情| 国产自产v一区二区三区c| 亚洲欧洲av在线| 欧美一区二区日韩| 免费人成在线不卡| 亚洲猫色日本管| 日韩精品一区二区三区视频在线观看 | 久久久精品综合| 欧美日韩免费观看一区二区三区| 国模大尺度一区二区三区| 亚洲欧美色图小说| www国产精品av| 欧美精品99久久久**| 91免费视频网| 高清不卡在线观看| 激情文学综合网| 日韩国产在线一| 亚洲青青青在线视频| 久久久久99精品国产片| 日韩视频永久免费| 欧美日韩成人综合| 色综合久久综合网97色综合 | 欧美在线视频全部完| 成人在线视频一区| 国产麻豆欧美日韩一区| 奇米影视在线99精品| 亚洲1区2区3区4区| 亚洲国产成人av网| 亚洲人成网站色在线观看| 国产欧美日韩综合精品一区二区| 91麻豆精品国产91久久久久 | 国产精品毛片大码女人| 久久精品一区蜜桃臀影院| 欧美成人一区二区三区在线观看| 欧美日韩亚洲综合一区二区三区| 色欧美乱欧美15图片| 97精品国产露脸对白| 成人一区二区三区视频| 国产传媒欧美日韩成人| 国产一区二区导航在线播放| 韩国理伦片一区二区三区在线播放 | 蜜臀av一区二区在线观看| 亚洲国产精品人人做人人爽| 亚洲一二三四在线| 懂色av一区二区三区免费观看| 成人黄色大片在线观看| 激情综合色综合久久综合| 免费国产亚洲视频| 久久精品久久综合| 男人的j进女人的j一区| 免费久久99精品国产| 激情综合五月婷婷| 国产成人精品网址| 不卡视频一二三四| 欧洲av在线精品| 欧美丰满高潮xxxx喷水动漫| 欧美一区二区三区免费视频 | 久久久久免费观看| 国产欧美日韩精品一区| 综合久久久久久| 亚洲成人激情自拍| 丝袜美腿一区二区三区| 天堂一区二区在线| 在线观看亚洲a| 亚洲一区视频在线观看视频| 亚洲国产综合视频在线观看| 日韩av在线发布| 国模无码大尺度一区二区三区| 国产成人精品一区二区三区网站观看| 成人黄色免费短视频| 欧美无砖砖区免费| 精品99一区二区| 亚洲欧洲在线观看av| 蜜臀久久99精品久久久久久9| 国产美女精品人人做人人爽| 91免费看`日韩一区二区| 欧美色视频在线| 日韩精品一区二区三区中文精品 | 亚洲三级在线观看| 美国十次了思思久久精品导航| 国产高清在线观看免费不卡| 欧美性xxxxx极品少妇| 欧美mv日韩mv国产网站app| 中文字幕中文字幕中文字幕亚洲无线| 亚洲大型综合色站| 粉嫩av一区二区三区在线播放| 欧美亚洲国产怡红院影院| 国产欧美日韩综合| 久久99精品久久久久久久久久久久 | 夜色激情一区二区| 国产精品99久久久| 欧美sm美女调教|