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

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

?? confirmnfa.java

?? 本程序是編譯原理的經(jīng)典試驗(yàn)
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**
 * 基于狀態(tài)轉(zhuǎn)換矩陣表示的FA確定化、最小化并給出有限自動(dòng)機(jī)的通用實(shí)現(xiàn)
 * @author Skypia0000
 *
 */

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

@SuppressWarnings(value = {"unchecked"})
public class ConfirmNFA {
	private String matrix_NFA[][];					/* 存放待確定化的非確定有限自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)換矩陣 */
	private String matrix_DFA[][];					/* 存放確定化后的狀態(tài)轉(zhuǎn)換矩陣 */
	private char input_SYM[];						/* 存放輸入符號(hào),初始符號(hào)集包含e(在數(shù)組尾端),確定化之后去掉e,長(zhǎng)度減1 */
	private char endStatus_NFA[];				/* 存放NFA的終態(tài)集 */
	private String end_Status;

	private ArrayList c_Group;						/* 存放根據(jù)NFA構(gòu)造出來的C子集 */

	private int len_SYMS;							/* 存放輸入符號(hào)長(zhǎng)度,input_SYM數(shù)組的長(zhǎng)度 */
	private int len_ENDSTNFA;					/* 存放NFA終態(tài)集的長(zhǎng)度,endStatus_NFA數(shù)組的長(zhǎng)度 */
	private int row_NFA, col_NFA;				/* 存放最初NFA狀態(tài)轉(zhuǎn)換矩陣(matrix_NFA)的行數(shù)及列數(shù),其中col_NFA比實(shí)際矩陣列數(shù)小1  */
	private int index_CGroup;						/* 存放在c_Group中游走的下標(biāo) */
	private int counter;								/* 子集中的狀態(tài)計(jì)數(shù)器 */
	private int row_DFA, col_DFA;				/* 存放確定化之后的狀態(tài)轉(zhuǎn)換矩陣(matrix_DFA)行數(shù)及列數(shù),其中col_DFA比實(shí)際矩陣列數(shù)小1*/

	/**
	 * DFA的最小化
	 * 思想:
	 * 1.首先去掉無用狀態(tài): a.任何狀態(tài)都不能到達(dá)的狀態(tài) b.從這個(gè)狀態(tài)沒有通路到達(dá)終態(tài)
	 * 2.合并等價(jià)狀態(tài):
	 * 		a.一致性條件:狀態(tài)s和狀態(tài)t必須同時(shí)為可接受狀態(tài)(初態(tài))或不可接受狀態(tài)(終態(tài))
	 * 		b.蔓延性條件:對(duì)以所有輸入符號(hào),狀態(tài)s和狀態(tài)t必須轉(zhuǎn)換到等價(jià)的狀態(tài)里
	 */
	public void miniDFA() {
		String start = "", end = "";					/* start為初態(tài)集,end為終態(tài)集 */
		boolean isUniform = true;
		ArrayList strOnly;								/* 存放P集合,與p_Group不同之處是只存放字符串,兒p_Group存放PStatus對(duì)象 */

		removeExcrescent();							/* 刪除無用狀態(tài),未完全實(shí)現(xiàn) */
		strOnly = divide();								/* 分割成初態(tài)集和終態(tài)集的列表 */
		start = strOnly.get(0).toString();			/* 初態(tài)集賦值 */
		end = strOnly.get(1).toString();			/* 終態(tài)集賦值 */

		/*
		 * 從狀態(tài)0開始與之后的每一個(gè)狀態(tài)進(jìn)行匹配,如果有等價(jià)狀態(tài)則合并狀態(tài)
		 * 將與當(dāng)前狀態(tài)等價(jià)的狀態(tài)
		 */
		while(isUniform) {
			for(int i = 0; i < row_DFA; i++) {						/* 當(dāng)前狀態(tài)循環(huán) */
				if(!matrix_DFA[i][0].equals("@")) {					/* 如果該狀態(tài)被合并,則跳過此狀態(tài),繼續(xù)下一個(gè)狀態(tài) */
					for(int j = i + 1; j < row_DFA; j++) {			/* 尋找與當(dāng)前狀態(tài)等價(jià)的狀態(tài)的循環(huán) */
						if(!matrix_DFA[j][0].equals("@")) {			/* 如果該狀態(tài)已被合并,則跳過此狀態(tài),繼續(xù)下一個(gè)狀態(tài) */
							String first = matrix_DFA[i][1];			/* 獲取當(dāng)前狀態(tài)在第一個(gè)輸入符號(hào)下的跳轉(zhuǎn)狀態(tài) */
							String next = matrix_DFA[j][1];			/* 獲取待匹配狀態(tài)在第一個(gè)輸入符號(hào)下的跳轉(zhuǎn)狀態(tài) */
							/* 當(dāng)前狀態(tài)和待匹配狀態(tài)的首個(gè)輸入符號(hào)下的跳轉(zhuǎn)狀態(tài)相同,當(dāng)前狀態(tài)和待匹配狀態(tài)在同一個(gè)集合中(可接受或不可接受)*/
							if(first.equals(next) && ((start.contains(first) && start.contains(next)) || (end.contains(next) && end.contains(next)))) {//bug
								isUniform = true;
								for(int k = 2; k <= col_DFA; k++) {	/* 接續(xù)判斷之后所有輸入符號(hào)下跳轉(zhuǎn)狀態(tài)是否相同*/
									String first2 = matrix_DFA[i][k];		
									String next2 = matrix_DFA[j][k];
									if(!first2.equals(next2)) {					/* 如果在同一個(gè)輸入符號(hào)下,跳轉(zhuǎn)狀態(tài)不相同,則放棄繼續(xù)到下一個(gè)狀態(tài) */
										isUniform = false;
										break;
									}
								}
								if(isUniform) {									/* 如果所有輸入下跳轉(zhuǎn)狀態(tài)都相同,則合并,即對(duì)待匹配狀態(tài)進(jìn)行標(biāo)記 */
									for(int m = 0; m < row_DFA; m++) {
										for(int n = 1; n <= col_DFA; n++) {
											if(matrix_DFA[m][n].equals(matrix_DFA[j][0])) {
												matrix_DFA[m][n] = matrix_DFA[i][0];
											}
										}
									}
									matrix_DFA[j][0] = "@";					/* 對(duì)待匹配狀態(tài)進(jìn)行標(biāo)記 */
									continue;
								}
							}
						}
					}
				}
			}	
		}

		/* 確定最小化DFA終態(tài) */
		for(int i = 0; i < row_DFA; i++) {
			if(matrix_DFA[i][0].equals("@")) {continue;}
			if(end.contains(matrix_DFA[i][0])) {
				end_Status = matrix_DFA[i][0];
				break;
			}
		}
	}
	/**
	 * 將狀態(tài)子集分割成初態(tài)集和終態(tài)集
	 */
	public ArrayList divide() {
		String sStatus = "";								/* 初態(tài)集 */
		String eStatus = "";								/* 終態(tài)集 */
		ArrayList arrayList = new ArrayList();

		for(int i = 0; i < c_Group.size(); i++) {		/* 對(duì)C子集的每個(gè)元素(確定化之后的狀態(tài)集)進(jìn)行檢測(cè) */
			if(!((ClosureStatus)c_Group.get(i)).getST().equals("@")) {		/* 如果該狀態(tài)不是無用狀態(tài),繼續(xù)執(zhí)行 */
				int j;
				for(j = 0; j < len_ENDSTNFA; j++) {
					if(((ClosureStatus)c_Group.get(i)).getSTATUS().contains("" + endStatus_NFA[j])) {	/* 如果狀態(tài)集包含最初NFA的終態(tài),則被加入到終態(tài)集 */
						eStatus += ((ClosureStatus)c_Group.get(i)).getST();			/* 將字符標(biāo)記添加到終態(tài)集中 */
						break;
					}
				}
				if(j >= len_ENDSTNFA) {						/* 其余添加到初態(tài)集中 */
					sStatus += ((ClosureStatus)c_Group.get(i)).getST();
				}
			}
		}
		arrayList.add(sStatus);
		arrayList.add(eStatus);
		return arrayList;
	}
	/**
	 * 刪除無用狀態(tài)
	 * 用@做標(biāo)記
	 */
	public void removeExcrescent() {
		for(int i = 1; i < row_DFA; i++) {
			if(!exit(matrix_DFA[i][0])) {
				matrix_DFA[i][0] = "@";
				((ClosureStatus)c_Group.get(i)).setST("@");
			}
		}
	}
	/**
	 * 判斷是否為無用狀態(tài)
	 * @param status
	 * @return
	 */
	public boolean exit(String status) {
		boolean exit = false;

		for(int i = 0; i < row_DFA; i++) {
			/* 檢查除自身以外的狀態(tài)  */
			if(!status.equals(matrix_DFA[i][0])) {
				for(int j = 1; j < col_DFA + 1; j++) {
					if(status.equals(matrix_DFA[i][j])) {
						exit = true;
						i = row_DFA;
						break;
					}
				}
			}
		}
		//haven't been completed..........
		if(exit) {

		}

		return exit;
	}

	/**
	 * 將確定化之后的狀態(tài)集用一個(gè)字符表示:0~9序列
	 */
	private void strToChar() {
		String moveStatus;							/* 存放子集成員在a輸入下的狀態(tài)轉(zhuǎn)換集 */
		String closureStatus;							/* 存放在moveStatus的閉包集 */
		row_DFA = c_Group.size();					/* 利用C子集族中的元素個(gè)數(shù)定義 */
		col_DFA = len_SYMS - 1;					/* 確定化之后去掉了輸入符號(hào)e,所以減1 */
		matrix_DFA = new String[row_DFA][col_DFA + 1];								/* + 1 是為了在每一行開頭存放狀態(tài)位 */

		for(int i = 0; i < c_Group.size(); i++) {/* 檢測(cè)所有狀態(tài)在所有輸入符號(hào)下的跳轉(zhuǎn)狀態(tài),并重新構(gòu)造狀態(tài)轉(zhuǎn)換矩陣 */
			ClosureStatus newCS = (ClosureStatus)c_Group.get(i);
			matrix_DFA[i][0] = newCS.getST();				/* 每一行開頭添加狀態(tài)標(biāo)記 */
			String tempStr = newCS.getSTATUS();
			for(int j = 1; j <= col_DFA; j++) {
				moveStatus = move(tempStr, j, matrix_NFA);			/* 求狀態(tài)在J輸入下的跳轉(zhuǎn)狀態(tài) */
				closureStatus = moveStatus;
				closureStatus = sort(removeEcho(closure(moveStatus, closureStatus, len_SYMS)));
				for(int k = 0; k < c_Group.size(); k++) {
					if(closureStatus.equals(((ClosureStatus)c_Group.get(k)).getSTATUS())) {
						matrix_DFA[i][j] = ((ClosureStatus)c_Group.get(k)).getST();
						break;
					}
				}
			}
		}
	}
	/**
	 * 將狀態(tài)集中的狀態(tài)從小到大排序
	 * @param str
	 * @return
	 */
	public String sort(String str){
		char[] s=str.toCharArray();
		String strs="";
		for(int i=0;i<str.length();i++) {
			char temp=s[str.length()-(1+i)];
			for(int j=str.length()-1;j>=1;j--){
				if(s[j]<s[j-1]){
					temp=s[j];
					s[j]=s[j-1];
					s[j-1]=temp;
				}
			}
		}
		for(int m=0;m<s.length;m++)
			strs+=s[m];
		return strs;
	}
	/**
	 * 刪除狀態(tài)集中重復(fù)的狀態(tài)
	 * @param str
	 * @return
	 */
	public String removeEcho(String str) {
		String tempStr = "";
		for(int i=0;i<str.length();i++){
			if(!tempStr.contains(String.valueOf(str.charAt(i)))) {
				tempStr+=String.valueOf(str.charAt(i));
			}
		}
		return tempStr;
	}
	/**
	 * 求一個(gè)狀態(tài)集在input輸入下的跳轉(zhuǎn)狀態(tài)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品18久久久| 成人精品鲁一区一区二区| 成人毛片视频在线观看| 欧美性大战久久久久久久蜜臀| 日韩一区二区三区免费看| 国产精品美日韩| 极品少妇xxxx精品少妇| 欧美午夜视频网站| 亚洲欧美日韩人成在线播放| 国产综合色产在线精品| 欧美久久一区二区| 亚洲精品免费一二三区| 国产精品123区| 欧美不卡一二三| 天天爽夜夜爽夜夜爽精品视频| av电影一区二区| 国产欧美综合在线| 国产裸体歌舞团一区二区| 欧美一级片在线观看| 亚洲精品国产a久久久久久| av亚洲精华国产精华| 亚洲一二三四在线| www.综合网.com| 国产日韩精品一区二区三区在线| 极品尤物av久久免费看| 欧美刺激午夜性久久久久久久| 五月激情六月综合| 欧美日韩的一区二区| 亚洲一卡二卡三卡四卡无卡久久| 色一区在线观看| 一区二区三区四区在线播放| 色综合久久久网| 一区二区日韩av| 欧美性大战久久| 秋霞国产午夜精品免费视频| 91精品国产综合久久精品app | 97精品久久久久中文字幕| 国产精品久久久久aaaa樱花| 波多野结衣一区二区三区| 国产精品国产自产拍在线| 91麻豆免费视频| 亚洲一本大道在线| 欧美精品久久天天躁| 另类小说欧美激情| 国产欧美一区二区三区沐欲| 成人app网站| 亚洲国产一区二区三区| 51久久夜色精品国产麻豆| 麻豆国产91在线播放| 国产三级精品在线| 色婷婷综合久久久| 日本一道高清亚洲日美韩| 精品国产一区二区在线观看| 国产精品911| 一区二区三区在线视频观看 | 国产亚洲一区二区三区四区| 成人av免费在线| 午夜视频久久久久久| 国产亚洲欧美中文| 色婷婷av一区二区三区之一色屋| 日本伊人色综合网| 国产精品网站在线| 91精品综合久久久久久| 国产福利一区在线观看| 亚洲一区电影777| 国产午夜亚洲精品羞羞网站| 色哦色哦哦色天天综合| 久久精品国产99| 综合分类小说区另类春色亚洲小说欧美 | 美女视频免费一区| 国产精品夫妻自拍| 日韩欧美一级片| 色哟哟在线观看一区二区三区| 日本特黄久久久高潮| 亚洲男同1069视频| 精品sm捆绑视频| 色菇凉天天综合网| 国产精品一区在线观看乱码| 亚洲国产精品欧美一二99| 国产欧美日韩精品一区| 7777女厕盗摄久久久| 91蜜桃网址入口| 国产精品一区在线| 麻豆国产精品777777在线| 亚洲小少妇裸体bbw| 国产精品美女久久久久久久久| 色婷婷久久一区二区三区麻豆| 美女mm1313爽爽久久久蜜臀| 亚洲一区二区av在线| 17c精品麻豆一区二区免费| 欧美精品一区二区三区蜜桃视频| 欧美日本国产视频| 日本伦理一区二区| 91免费版pro下载短视频| 国产精品亚洲午夜一区二区三区 | 国产喷白浆一区二区三区| 911国产精品| 欧美色图在线观看| 色呦呦一区二区三区| 99精品国产热久久91蜜凸| 国产老妇另类xxxxx| 免费高清在线一区| 日本不卡视频在线观看| 午夜av区久久| 性感美女久久精品| 午夜免费欧美电影| 天天色 色综合| 亚洲国产视频直播| 亚洲国产综合91精品麻豆| 亚洲视频在线观看三级| 亚洲人成在线观看一区二区| 综合自拍亚洲综合图不卡区| 亚洲精品久久嫩草网站秘色| 亚洲男人天堂一区| 亚洲成av人片www| 天天免费综合色| 久草精品在线观看| 国产乱码精品一区二区三| 懂色av一区二区在线播放| 成人av电影在线观看| av电影天堂一区二区在线观看| 色综合天天综合色综合av| 色拍拍在线精品视频8848| 欧美午夜电影在线播放| 欧美日韩在线综合| 日韩欧美高清在线| 国产亚洲欧美在线| 一区二区三区在线视频播放| 日韩国产精品久久久久久亚洲| 免费看欧美女人艹b| 国产精品一二三四| 99精品欧美一区二区三区综合在线| 色综合视频在线观看| 欧美日韩成人高清| 久久午夜老司机| 自拍偷拍亚洲欧美日韩| 午夜精品久久久久久| 国内成人自拍视频| 色综合天天综合狠狠| 日韩一区二区精品在线观看| 国产日产欧美一区| 午夜影院在线观看欧美| 国产一区二区视频在线播放| 99re热视频精品| 日韩欧美国产一区二区在线播放 | 91久久精品一区二区三| 91精品国产欧美一区二区成人| 久久众筹精品私拍模特| 亚洲女人****多毛耸耸8| 免费高清视频精品| 成人的网站免费观看| 91精品国产综合久久香蕉的特点| 国产日产欧美一区| 日本不卡视频在线观看| 91丨porny丨中文| 日韩欧美一二三区| 亚洲激情欧美激情| 色狠狠色狠狠综合| 久久亚洲精品国产精品紫薇 | 日本一二三不卡| 五月综合激情网| 成人动漫一区二区| 欧美大片在线观看一区| 一区二区三区影院| 不卡av在线免费观看| 日韩一区二区在线免费观看| 最新成人av在线| 国产成人精品三级麻豆| 日韩亚洲欧美中文三级| 亚洲一区二区影院| 成人高清免费在线播放| 精品国产髙清在线看国产毛片| 亚洲一区二区三区四区的| www.亚洲国产| 国产人久久人人人人爽| 韩国女主播成人在线| 56国语精品自产拍在线观看| 一区二区久久久| 91蜜桃网址入口| 最近日韩中文字幕| 99综合电影在线视频| 久久久av毛片精品| 国内国产精品久久| 精品欧美一区二区三区精品久久| 亚洲一区二区三区不卡国产欧美| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 奇米在线7777在线精品| 91福利视频网站| 亚洲视频香蕉人妖| av电影在线观看不卡| 国产精品少妇自拍| 成人在线视频首页| 国产日韩欧美高清在线| 国产精品一品视频| 国产亚洲人成网站| av在线免费不卡| 亚洲男人的天堂在线aⅴ视频| av激情亚洲男人天堂| 亚洲视频1区2区| 欧美自拍偷拍午夜视频|