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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmimproved.java

?? Svm based face detector code
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:


import java.util.ArrayList;
/**
 * The class MMImproved contains the logic for MiniMax Algorithm with impoved heuristic
 * To get a minimax move for a given board position call getMaxMove()function.
 * @author sanshack
 *
 */
public class MMImproved {
	public static String maxChild;
	public static long numEstimation=0;
	public static long maxEstimate =0;
	public static boolean gameStatus=true;
	/**
	 * This function would return a Mini Max move with improved heuristic.
	 * @param initialPosition
	 * @param totaldepth
	 * @param mode
	 * @return move
	 */
	public String getMaxMove(String initialPosition,int totaldepth,int mode) {
		maxEstimate=MaxMin(initialPosition,0,totaldepth,mode);
		if(maxChild==null)maxChild=initialPosition;
		System.out.println("Board Position: "+maxChild);
		System.out.println("Positions Evaluated by static estimation:"+numEstimation);
		System.out.println("MINIMAX estimate="+maxEstimate);
		ArrayList<String> childList1 = new ArrayList<String>();
		childList1 = GenerateMoves(maxChild,totaldepth,'B',1);
		int numBlackMoves =childList1.size();
		int value = StaticEstimator.midEndGameEstimator(maxChild, numBlackMoves);
		if(value <= -10000 && mode==1){
			System.out.println("Player 2 wins");
		}  else if(value >= 10000 && mode==1) {
			System.out.println("Player 1  wins");
		}
		return maxChild;
	}
	
	/**
	 * 
	 * Recursive Max Min function
	 * @param x
	 * @param depth
	 * @param totaldepth
	 * @param mode
	 * @return Max value
	 */
	public int MaxMin(String x,int depth,int totaldepth,int mode) {
		int numWhite = Utility.countChar(x, 'W');
		int numBlack = Utility.countChar(x, 'B');
		ArrayList<String> childList1 = new ArrayList<String>();
		childList1 = GenerateMoves(x,depth,'B',mode);
		int numBlackMoves =childList1.size();
		ArrayList<String> childList2 = new ArrayList<String>();
		childList2 = GenerateMoves(x,depth,'B',mode);
		int numWhiteMoves =childList2.size();
		if(depth==totaldepth || ((mode==1)&&((numWhite<=2) || (numBlack<=2) ||(numWhiteMoves==0)))) {
			numEstimation++;
			//System.out.println("numblackmoves1 start");
			//System.out.println("depth="+depth);
			
			//System.out.println("numbBalcke="+numBlackMoves);
			int value=StaticEstimator.midEndGameEstimatorImproved(x,numBlackMoves,numWhiteMoves);				
			return value;		
		}
		else {
			int v =-10000000;			
			ArrayList<String> childList = GenerateMoves(x,depth,'W',mode);
			java.util.Iterator<String> iter = childList.iterator();
			while(iter.hasNext()) {
				String childString = iter.next();
				int var = MinMax(childString,depth+1,totaldepth,mode);
				if(var > v) {
					if(depth==0) {
						maxChild = childString;
						//System.out.println(maxChild+"        "+depth);
						maxEstimate = var;
					}
					
					v = var;
				}
				
			}
			return v;
		}
	}
	
	public int max(int x ,int y) {
		if(x > y) return x;
		return y;
	}
	
	/**
	 * Recursive MinMax function
	 * @param x
	 * @param depth
	 * @param totaldepth
	 * @param mode
	 * @return Min value
	 */
	public int MinMax(String x,int depth,int totaldepth,int mode) {
		int numWhite = Utility.countChar(x, 'W');
		int numBlack = Utility.countChar(x, 'B');
		ArrayList<String> childList1 = new ArrayList<String>();
		childList1 = GenerateMoves(x,depth,'B',mode);
		int numBlackMoves =childList1.size();
		ArrayList<String> childList2 = new ArrayList<String>();
		childList2 = GenerateMoves(x,depth,'B',mode);
		int numWhiteMoves =childList2.size();
		if(depth==totaldepth || ((mode==1)&&((numWhite<=2) || (numBlack<=2) ||(numBlackMoves==0)))) {
			numEstimation++;
			//System.out.println("numblackmoves start");
						
				int value=StaticEstimator.midEndGameEstimatorImproved(x,numBlackMoves,numWhiteMoves);
				return value;
			
		}
		else {
			int v =10000000;
			ArrayList<String> childList = GenerateMoves(x,depth,'B',mode);
			java.util.Iterator<String> iter = childList.iterator();
			while(iter.hasNext()) {
				String childString = iter.next();				
				int var = MaxMin(childString,depth+1,totaldepth,mode);
				if(var < v) {
					v = var;
				}
			}
			return v;
		}
	}
	
	/**
	 * Generate a moves in a list. 
	 * @param x
	 * @param depth - depth to traverse the tree
	 * @param color - generate moves of which color
	 * @param mode - 0 for opening 1 for midend game
	 * @return List of moves
	 */
	public ArrayList<String> GenerateMoves(String x,int depth,char color,int mode) {
		ArrayList<String> list;
		if(mode==0) {
			list = GenerateMovesOpening(x,depth,color);
		}else {
			list = GenerateMovesMidEndGame(x,depth,color);
		}
		
		return list;
	}
	
	/**
	 * Generate a moves in a list for mid end game. 
	 * @param x
	 * @param depth - depth to traverse the tree
	 * @param color - generate moves of which color
	 * @param mode - 0 for opening 1 for midend game
	 * @return List of moves
	 */
	public ArrayList<String> GenerateMovesMidEndGame (String x,int depth,char color) {
		//System.out.println("i am here");
		int numWhite=Utility.countChar(x, 'W');
		int numBlack=Utility.countChar(x, 'B');
		ArrayList<String> list=null;
		if((numWhite == 3 && color =='W')||(numBlack==3 && color=='B')) {
			list= GenerateHopping(x,depth,color);
		} else {
			list= GenerateMove(x,depth,color);
		} 
		if(list == null) {System.out.println("null for list");}
		return list;
	}
	
	public ArrayList<String> GenerateMovesOpening(String x,int depth,char color) {
		ArrayList<String> list = GenerateAdd(x,depth,color);
		return list;
	}
	
	/**
	 * Generate a moves in a list for opening. 
	 * @param x
	 * @param depth - depth to traverse the tree
	 * @param color - generate moves of which color
	 * @param mode - 0 for opening 1 for midend game
	 * @return List of moves
	 */
	public ArrayList<String> GenerateMove(String x,int depth,char color) {
		ArrayList<String> list= new ArrayList<String>();
		
		for(int i=0;i<Constants.BOARD_LENGTH;i++) {
			char temp = x.charAt(i);
			if(temp == color) {						
				int[] n = getNeighbors(i);
				for(int k=0;k<4;k++) {
					int j=n[k];
					if(j!=-1) {
						if(x.charAt(j)=='x')  {
							char[] charArray = new char[23];
							charArray = x.toCharArray();
							charArray[i]='x';
							charArray[j]=color;
							String tempString  = String.valueOf(charArray);
							if(closeMill(j,tempString,color)) {
								generateRemove(tempString,list,color);
							} else {
								//System.out.println("Generate mov:adding "+tempString);
								list.add(tempString);
							}
						}
					}
					
				}			
			
			}
		}
		return list;
	}
	
	/**
	 * Generate a moves in a list for end game. 
	 * @param x
	 * @param depth - depth to traverse the tree
	 * @param color - generate moves of which color
	 * @param mode - 0 for opening 1 for midend game
	 * @return List of moves
	 */
	
	public ArrayList<String> GenerateHopping(String x,int depth,char color) {
		ArrayList<String> list= new ArrayList<String>();
		for(int j=0;j<Constants.BOARD_LENGTH;j++) {
			if(x.charAt(j)==color) {
				for(int i=0;i<Constants.BOARD_LENGTH;i++) {
					char temp = x.charAt(i);
					if(temp == 'x') {		
						char[] charArray = new char[23];
						charArray = x.toCharArray();
						charArray[j]='x';
						charArray[i]=color;
						String tempString  = String.valueOf(charArray);
						if(closeMill(i,tempString,color)) {
							generateRemove(tempString,list,color);
						} else {
							//System.out.println("Generate hop:adding "+tempString);
							list.add(tempString);
						}
					
					}
				}
			}
			
		}		
		return list;
	}
	
	/**
	 * Generate a moves in a list by adding pieces of specified color at vacant spaces . 
	 * @param x
	 * @param depth - depth to traverse the tree
	 * @param color - generate moves of which color
	 * @return List of moves
	 */
	public ArrayList<String> GenerateAdd(String x,int depth,char color) {
		//System.out.println("i am here in add");
		ArrayList<String> list= new ArrayList<String>();
		
		for(int i=0;i<Constants.BOARD_LENGTH;i++) {
			char temp = x.charAt(i);
			if(temp == 'x') {		
				char[] charArray = new char[23];
				charArray = x.toCharArray();
				charArray[i]=color;
				String tempString  = String.valueOf(charArray);
				if(closeMill(i,tempString,color)) {
					generateRemove(tempString,list,color);
				} else {
					//System.out.println("Generate add:adding: "+tempString);
					list.add(tempString);
				}
			
			}
		}
		return list;
	}
	
	/**
	 * Generate list of moves possible by removing the desired piece
	 * @param b
	 * @param list
	 * @param color
	 */
	public void generateRemove(String b,ArrayList<String> list,char color) {
		int count=0;
		if(color=='B') {
			color='W';
		}else {
			color='B';
		}
		for(int i=0;i<b.length();i++) {
			if(b.charAt(i)==color) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区在线观看免费视频| 亚洲一区二区欧美激情| 国产色综合久久| 亚洲色图欧美激情| 麻豆精品久久精品色综合| 亚洲va欧美va人人爽午夜| 久草中文综合在线| 91老师国产黑色丝袜在线| 制服丝袜激情欧洲亚洲| 久久精品视频免费| 日韩二区三区在线观看| 成人免费视频免费观看| 日韩欧美卡一卡二| 国产亚洲一区字幕| 欧美一区二区三区爱爱| 欧美午夜电影在线播放| 波多野结衣在线一区| 成人毛片在线观看| 92精品国产成人观看免费| 国产精品一二三在| 精品国产免费人成电影在线观看四季| 亚洲成人高清在线| 9191国产精品| 美腿丝袜亚洲三区| 久久精品夜色噜噜亚洲a∨| 国模少妇一区二区三区| 国产欧美日韩三区| 91啦中文在线观看| 日韩专区一卡二卡| 欧美第一区第二区| 国产福利91精品| 亚洲乱码国产乱码精品精98午夜 | 激情久久五月天| 欧美一区二区三区在线看| 激情欧美一区二区三区在线观看| 久久久久久综合| 不卡一区在线观看| 亚洲国产成人va在线观看天堂| 91精品国产欧美一区二区成人| 韩国成人福利片在线播放| 中文字幕中文字幕一区| 精品视频一区三区九区| 久久精品国产免费看久久精品| 久久久精品国产免大香伊| 91色porny| 国产美女娇喘av呻吟久久| 日本一区二区免费在线观看视频| 国产精品综合久久| 一区二区三区中文在线| 亚洲精品在线三区| 一本大道综合伊人精品热热| 久久国产婷婷国产香蕉| **性色生活片久久毛片| 日韩一区二区免费在线观看| 成人一道本在线| 偷拍亚洲欧洲综合| 亚洲欧美日本韩国| 精品国产免费人成电影在线观看四季| 97se亚洲国产综合自在线不卡| 日本亚洲三级在线| 亚洲另类在线视频| 久久久久久综合| 在线视频一区二区三| 国产精品 欧美精品| 丝袜脚交一区二区| 亚洲欧美国产毛片在线| 国产农村妇女毛片精品久久麻豆| 欧美日韩国产中文| 91久久精品网| 国产成人免费在线视频| 久久精品国产精品青草| 午夜视频在线观看一区二区三区| 国产精品久久久久久久久免费桃花| 欧美不卡激情三级在线观看| 精品1区2区3区| 丁香啪啪综合成人亚洲小说 | 国产精品福利一区二区| 911精品国产一区二区在线| 波波电影院一区二区三区| 国产毛片一区二区| 国产中文字幕一区| 人人精品人人爱| 婷婷夜色潮精品综合在线| 国产日韩欧美一区二区三区乱码| 欧美va天堂va视频va在线| 日韩一卡二卡三卡四卡| 欧美精品一级二级三级| 欧美伊人久久大香线蕉综合69| 成人av中文字幕| 国产剧情av麻豆香蕉精品| 国产综合成人久久大片91| 久久99热99| 激情丁香综合五月| 国产不卡一区视频| 国产成人亚洲综合a∨猫咪| 久久黄色级2电影| 久草中文综合在线| 国产一区二区三区在线观看精品 | 88在线观看91蜜桃国自产| 99在线视频精品| 99re亚洲国产精品| jizz一区二区| 91麻豆免费在线观看| 岛国一区二区在线观看| 成人精品一区二区三区中文字幕| 岛国精品在线观看| 色悠悠久久综合| 欧美性视频一区二区三区| 欧美精品电影在线播放| 91成人免费电影| 欧美在线999| 3751色影院一区二区三区| 日韩精品在线一区二区| 国产午夜三级一区二区三| 日本一区二区三区视频视频| 国产精品进线69影院| 综合久久综合久久| 亚洲日本青草视频在线怡红院| 夜夜爽夜夜爽精品视频| 麻豆精品在线观看| 丁香婷婷综合网| 一区二区三区精品视频| 午夜精品久久久久久久久| 国产成人一区在线| 欧美高清视频在线高清观看mv色露露十八| 欧美一三区三区四区免费在线看 | 色综合网站在线| 精品美女一区二区| 亚洲黄色免费网站| 国产高清视频一区| 欧美一区二区日韩| 亚洲色图欧洲色图婷婷| 国产精品一区二区久久精品爱涩| 欧美视频完全免费看| 中文字幕欧美一区| 国产精品一区不卡| 日韩精品资源二区在线| 亚洲一二三四区| 99精品视频在线免费观看| 日韩美女在线视频| 亚洲午夜影视影院在线观看| 国产成人av电影在线| 精品毛片乱码1区2区3区| 亚洲一区国产视频| 色一区在线观看| 成人免费在线视频| 国产aⅴ精品一区二区三区色成熟| 日韩一级在线观看| 视频一区视频二区中文字幕| 欧美在线观看一区| 亚洲精品国产高清久久伦理二区| 大桥未久av一区二区三区中文| 久久综合色之久久综合| 蜜臀a∨国产成人精品| 久久亚洲一区二区三区明星换脸| 亚洲国产日韩一级| 欧美撒尿777hd撒尿| 亚洲欧美偷拍另类a∨色屁股| 国产成人亚洲综合a∨猫咪| 久久精品亚洲乱码伦伦中文| 精品亚洲成a人| 26uuu国产日韩综合| 国产做a爰片久久毛片| 久久久久久免费毛片精品| 国产伦精一区二区三区| 欧美精品一区二区高清在线观看 | 6080国产精品一区二区| 日韩经典一区二区| 日韩欧美一区二区免费| 久久精品99国产精品日本| 日韩精品一区在线观看| 国产麻豆日韩欧美久久| 国产日韩欧美精品综合| 不卡视频一二三| 亚洲女厕所小便bbb| 欧美色图第一页| 欧美96一区二区免费视频| 欧美成人猛片aaaaaaa| 国产精品中文欧美| 亚洲国产精品av| 色综合久久久久| 亚洲成人动漫在线免费观看| 91精品国产丝袜白色高跟鞋| 久久精品国产亚洲一区二区三区| 久久久久国产精品人| av影院午夜一区| 亚洲成av人综合在线观看| 久久天天做天天爱综合色| 久久亚洲综合色| 成人性视频免费网站| 亚洲欧美一区二区三区极速播放| 日本精品裸体写真集在线观看| 午夜一区二区三区在线观看| 欧美一区二区福利视频| 懂色av中文一区二区三区| 亚洲最新在线观看| 欧美mv和日韩mv的网站| 99精品视频中文字幕| 免费av网站大全久久| 国产精品不卡视频|