一致,均為3 ;循環(huán)次數(shù)一致,均為10。跳至子步驟6.6。
[0143]子步驟6.6循環(huán)塊差值補償子步驟
[0144](I左已循環(huán)次數(shù)-右已循環(huán)次數(shù)I X循環(huán)塊內(nèi)狀態(tài)個數(shù))=0,從左右有序隊列中刪除首個狀態(tài)塊,并跳至子步驟6.4。
[0145]子步驟6.4左有序隊列掃描子步驟
[0146]左有序隊列為空,將右有序隊列放入子步驟6.7的輸入中,跳轉(zhuǎn)至子步驟6.7。
[0147]子步驟6.7右有序隊列后掃描子步驟
[0148]右有序隊列為空,跳至子步驟6.8。
[0149]子步驟6.8狀態(tài)機(jī)長度判斷子步驟
[0150]經(jīng)過判斷,左狀態(tài)機(jī)長度和右狀態(tài)機(jī)長度相等,向步驟4返回長度相同。
[0151]第六步:步驟4全循環(huán)塊處理步驟
[0152]該步驟接收到長度比較步驟返回的長度相同信息。比較左右循環(huán)塊的循環(huán)次數(shù),兩個循環(huán)塊循環(huán)次數(shù)均為10,循環(huán)次數(shù)相同,保持當(dāng)前狀態(tài)為全循環(huán)狀態(tài),跳至步驟2。
[0153]第七步:步驟2狀態(tài)塊分類步驟
[0154]狀態(tài)塊隊列中的狀態(tài)塊I和狀態(tài)塊2被讀取之后,待判定隊列為空,沒有未讀取狀態(tài)塊,當(dāng)前狀態(tài)為全循環(huán)狀態(tài),輸出可拼接規(guī)則,該方法結(jié)束。
[0155]實施例二:
[0156]如圖3所示的兩個嵌套循環(huán)狀態(tài)塊,判斷其可拼接性和拼接規(guī)則。
[0157]第一步:步驟I初始化步驟
[0158]初始化,將當(dāng)前狀態(tài)置為空狀態(tài)。
[0159]第二步:步驟2狀態(tài)塊分類步驟
[0160]讀取狀態(tài)塊1,當(dāng)前系統(tǒng)狀態(tài)為空狀態(tài),狀態(tài)塊I為嵌套循環(huán)塊,置當(dāng)期狀態(tài)為全嵌套循環(huán)狀態(tài),重新開始步騾2。
[0161]第三步:步驟2狀態(tài)塊分類步驟
[0162]讀取狀態(tài)塊2,當(dāng)前系統(tǒng)狀態(tài)為全嵌套循環(huán)狀態(tài),狀態(tài)塊2為嵌套循環(huán)塊,跳轉(zhuǎn)到步驟5。
[0163]第四步:步驟5全嵌套循環(huán)塊處理步驟
[0164]該步驟判斷全嵌套循環(huán)塊的拼接規(guī)則。調(diào)用步驟6進(jìn)行長度比較。
[0165]第五步:步驟6長度比較步驟
[0166]子步驟6.0比較輸入子步驟
[0167]將狀態(tài)塊I標(biāo)記為左狀態(tài)塊,狀態(tài)塊2標(biāo)記為右狀態(tài)塊。
[0168]子步驟6.1循環(huán)嵌套層次檢測子步驟
[0169]對于左狀態(tài)塊進(jìn)行判斷,左狀態(tài)塊是嵌套循環(huán)塊,將內(nèi)部的循環(huán)狀態(tài)塊放入子步驟6.1輸入中。再次執(zhí)行子步驟6.1,這個循環(huán)塊是非嵌套的,輸出I。返回調(diào)用的步驟6.1,遞歸調(diào)用結(jié)束,輸出2。
[0170]對右狀態(tài)塊進(jìn)行判斷,右狀態(tài)塊是嵌套循環(huán)塊,將內(nèi)部的循環(huán)狀態(tài)塊放入子步驟6.1輸入中。再次執(zhí)行子步驟6.1,這個循環(huán)塊是非嵌套的,輸出I。返回調(diào)用的步驟6.1,遞歸調(diào)用結(jié)束,輸出2。
[0171 ] 子步驟6.2嵌套循環(huán)拆解子步驟
[0172]將左狀態(tài)塊拆解為I個順序塊、一個循環(huán)塊放入左有序隊列中,右狀態(tài)塊拆解為I個循環(huán)塊、一個順序塊放入右有序隊列中,將兩個隊列中每一個狀態(tài)塊分別輸入到子步驟6.3的輸入中,跳轉(zhuǎn)到子步驟6.3。
[0173]子步驟6.3狀態(tài)結(jié)構(gòu)一維化子步驟
[0174]該子步驟經(jīng)過遞歸調(diào)用,輸出左右兩個有序隊列,左有序隊列按順序依次是一個順序塊和一個循環(huán)塊,右有序隊列按順序依次是一個循環(huán)塊和一個順序塊。返回子步驟
6.2ο
[0175]子步驟6.2嵌套循環(huán)拆解子步驟
[0176]調(diào)用子步驟6.3結(jié)束,將左右兩個狀態(tài)塊有序隊列放入子步驟6.4的輸入中,跳轉(zhuǎn)到子步驟6.4。
[0177]子步驟6.4左有序隊列掃描子步驟
[0178]左有序隊列不為空,則判斷左有序隊列的首個狀態(tài)塊的類型為順序塊,將順序塊中的狀態(tài)數(shù)I累加到左狀態(tài)機(jī)長度中。將左有序隊列首個狀態(tài)塊刪除,跳轉(zhuǎn)至子步驟6.4。
[0179]子步驟6.4左有序隊列掃描子步驟
[0180]左有序隊列不為空,則判斷左有序隊列的首個狀態(tài)塊的類型為循環(huán)塊,將左循環(huán)塊信息和右有序隊列放入子步驟6.5的輸入中,跳轉(zhuǎn)到子步驟6.5。
[0181]子步驟6.5右有序隊列掃描子步驟
[0182]判斷右有序隊列的首個狀態(tài)塊的類型為循環(huán)塊,判斷輸入左循環(huán)塊信息中總循環(huán)次數(shù)和右循環(huán)塊的總循環(huán)次數(shù)和循環(huán)塊內(nèi)狀態(tài)個數(shù)是否一致,其中左循環(huán)塊總循環(huán)次數(shù)為5,循環(huán)體內(nèi)狀態(tài)個數(shù)為2 ;右循環(huán)塊總循環(huán)次數(shù)為5,循環(huán)體內(nèi)狀態(tài)個數(shù)為2。兩個循環(huán)體總循環(huán)次數(shù)和循環(huán)塊內(nèi)狀態(tài)個數(shù)均一致。跳轉(zhuǎn)至子步驟6.6。
[0183]子步驟6.6循環(huán)塊差值補償子步驟
[0184](I左已循環(huán)次數(shù)-右已循環(huán)次數(shù)I X循環(huán)塊內(nèi)狀態(tài)個數(shù))=0,從左右有序隊列中刪除首個狀態(tài)塊,并跳至子步驟6.4。
[0185]子步驟6.4左有序隊列掃描子步驟
[0186]左有序隊列為空,則將右有序隊列放入子步驟6.7的輸入中,跳轉(zhuǎn)至子步驟6.7。
[0187]子步驟6.7右有序隊列后掃描子步驟
[0188]右有序隊列不為空,則判斷右有序隊列的首個狀態(tài)塊的類型為順序塊,將順序塊中的狀態(tài)數(shù)I累加到右狀態(tài)機(jī)長度中,從右有序隊列中刪除首個狀態(tài)塊,并跳至子步驟6.7。
[0189]子步驟6.7右有序隊列后掃描子步驟
[0190]右有序隊列為空,跳至子步驟6.8。
[0191]子步驟6.8狀態(tài)機(jī)長度判斷子步驟
[0192]左右狀態(tài)機(jī)長度均為累加值1,長度相等,向步驟5返回長度相同。
[0193]第六步:步驟5全循環(huán)塊處理步驟
[0194]該步驟接收到長度比較步驟返回的長度相同信息。比較左右嵌套循環(huán)塊的循環(huán)次數(shù),兩個嵌套循環(huán)塊循環(huán)次數(shù)均為10,循環(huán)次數(shù)相同,保持當(dāng)前狀態(tài)為全嵌套循環(huán)狀態(tài),跳至步驟2。
[0195]第七步:步驟2狀態(tài)塊分類步驟
[0196]狀態(tài)塊隊列中的狀態(tài)塊I和狀態(tài)塊2被讀取之后,待判定隊列為空,沒有未讀取狀態(tài)塊,當(dāng)前狀態(tài)為全嵌套循環(huán)狀態(tài),輸出可拼接規(guī)則,該方法結(jié)束。
[0197]以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種狀態(tài)機(jī)可拼接性和拼接規(guī)則判定方法,包括以下步驟: 步驟1,進(jìn)行初始化,將當(dāng)前狀態(tài)置為空狀態(tài); 步驟2,從待拼接狀態(tài)塊隊列中讀取一個狀態(tài)塊,根據(jù)該狀態(tài)塊的類型和當(dāng)前狀態(tài)判斷該狀態(tài)的處理方法,修改當(dāng)前狀態(tài),并跳轉(zhuǎn)到相應(yīng)規(guī)則的步驟中; 步驟3,判斷全順序塊的拼接規(guī)則,保持當(dāng)前狀態(tài)為全順序狀態(tài),跳至步驟2 ; 步驟4,判斷全循環(huán)塊的拼接規(guī)則,保持當(dāng)前狀態(tài)為全循環(huán)狀態(tài),且讀入的狀態(tài)塊為循環(huán)塊,調(diào)用步驟6進(jìn)行長度比較: 若步驟6返回長度相同,且比較的左右循環(huán)塊循環(huán)次數(shù)相同,則保持當(dāng)前狀態(tài)為全循環(huán)狀態(tài),跳至步驟2 ; 若步驟6返回長度相同,且比較的左右循環(huán)塊循環(huán)次數(shù)不同,則輸出等價變換規(guī)則,方法結(jié)束; 若步驟6返回結(jié)果不同信息,則輸出不可拼接,該方法結(jié)束; 步驟5,判斷全嵌套循環(huán)塊的拼接規(guī)則,保持當(dāng)前狀態(tài)為全嵌套循環(huán)狀態(tài),且讀入的狀態(tài)塊為嵌套循環(huán)塊,調(diào)用步驟6進(jìn)行長度比較: 若步驟6返回長度相同,且比較的左右嵌套循環(huán)塊循環(huán)次數(shù)相同,則保持當(dāng)前狀態(tài)為全嵌套循環(huán)狀態(tài),跳至步驟2 ; 若步驟6返回長度相同,且比較的左右嵌套循環(huán)塊循環(huán)次數(shù)不同,則輸出等價變換規(guī)貝I],方法結(jié)束; 若步驟6返回長度不同,則輸出不可拼接,該方法結(jié)束; 步驟6,確定輸入的兩個循環(huán)塊或兩個嵌套循環(huán)塊長度是否一致。
2.根據(jù)權(quán)利要求1所述的狀態(tài)機(jī)可拼接性和拼接規(guī)則判定方法,其中步驟2中所述根據(jù)該狀態(tài)塊的類型和當(dāng)前狀態(tài)判斷該狀態(tài)的處理方法,修改當(dāng)前狀態(tài),并跳轉(zhuǎn)到相應(yīng)規(guī)則的步驟中的步驟包括: 若當(dāng)前狀態(tài)為空狀態(tài): 若讀取的狀態(tài)塊為順序塊,置當(dāng)前狀態(tài)為全順序狀態(tài),重新開始步驟2 ; 若該狀態(tài)塊為循環(huán)塊,置當(dāng)前狀態(tài)為全循環(huán)狀態(tài),記錄當(dāng)前循環(huán)塊的循環(huán)長度,重新開始步驟2 ; 若該狀態(tài)塊為嵌套循環(huán)塊,置當(dāng)前狀態(tài)