999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

優化構建邏輯函數的語法樹

2018-06-08 10:03:40張明新
科技視界 2018年8期

張明新

【摘 要】本文通過建立邏輯函數的預處理算法和數據存儲結構,解析邏輯函數結構;在構建邏輯函數的語法樹時,利用解析的數據可以提高產生式匹配的準確性,實現優化回溯方法。

【關鍵詞】邏輯函數;語法樹;文法;算法,數據結構

中圖分類號: TP312 文獻標識碼: A 文章編號: 2095-2457(2018)08-0078-003

Optimize the Syntax Tree for Building Logic Functions

ZHANG Ming-xin

(College of Information,Huaibei Normal University,Huaibei 235000,Anhui,China)

【Abstract】This paper establishes the logic function preprocessing algorithm and data storage structure and analyzes the structure of the logic function.When constructing the syntax tree of the logic function,using the parsed data can improve the accuracy of production matching and realize the optimized backtracking method.

【Key words】Logic function;Syntax tree;Grammar;Algorithm;Data structure

0 引言

邏輯函數是一組邏輯變量之間計算關系的組合,(設:F=f(Al,A2,…,An) ;其中:Al,A2,...,An為輸入邏輯變量;F為輸出邏輯變量,取值是0或l),這組合也確定了函數的內在功能;邏輯函數的表達式可以采用最小項或最大項進行描述,這種形式更直接表達了邏輯參量之間的組合關系。構建邏輯函數的語法樹,就是建立一套規則和方法,采用樹或圖的結構來表達邏輯函數的這種組合關系,從而便于掌握和理解、應用它們的結構關系。

1 文法定義與設計

在形式上,邏輯函數是等式構成,主題特征是等式右邊的布爾表達式,也是構造語法樹的對象。布爾表達式是由邏輯運算符、邏輯變量、括號等字符組成,邏輯運算包括非、與、或三種基本運算(其他運算可以轉換為這三種基本運算),本文定義非、與、或三種基本運算為:!、*、+,以及括號運算符:(、);邏輯變量采用英文字母(含大小寫形式)A、B、C、a、b、c;邏輯反變量用!A,!a等表示。

文法設計就是建立一套規則,為構造語法樹提供實現方法。

設文法G=(VT,VN,P,S),P是一組產生的規則:

(1)S->S+S

(2)S->S*S

(3)S->(S) |!(S)

(4)S->KS|K

(5)S->ε

(6)K->(|)|!|*|+|

(7)K->A|B|C|A?|B?|C?|a|b|c|a?|b?|c?|…

約定S、K只做為非終結符。

2 數據結構設計

2.1 樹結點結構

對邏輯函數運算與、或是二目運算,三叉樹能夠組織運算的表達關系,對于一目的非運算,可以采用二叉樹結構,但為數據一致性結構,本文約定非運算定義為三叉樹結構,在語法樹生成過程中,對非運算與計算項之間增加一個且僅為連接作用符“@”,用@符作為葉子結點。 Lpointer、Mpointer、Rpointer分別是左中右指針,Data1,是計算項數據域,Data2是輔助信息域,樹結點結構見圖1。

2.2 葉子結點結構

葉子結點結構存儲布爾表達式中具體計算符號,結構見圖2。Data是葉子邏輯變量、運算符號數據域,D1等是輔助信息域。

2.3 邏輯函數預處理

在語法樹構造過程中,始終存在產生式匹配問題,如同一非終結符有N個產生式,當匹配不成功時,要回溯處理,用下一個產生式進行匹配處理,如此,正確匹配一個產生式平均要達到N/2次。為優化回溯方法,建立對布爾表達式預處理環節,提高產生式匹配的確定性[1-6]。

邏輯函數預處理就是建立掃描識別算法,按照或運算為單位,對邏輯函數右端布爾表達式進行識別,找到對應計算項,并將計算項采用鏈表結構進行組織存儲。數據結構圖3:

H1:表示第一層掃描的數據鏈表。

邏輯函數預處理掃描識別算法(用類C語言描述):

設邏輯函數的布爾表達式為str;計數器i;括號運算符標志f;計算項sdata;

初始化 i=0;f=0;sdata="";

(1)ch=read(str);

(2)if ( ch=="#")

do

{ 遇到str結束符,將當前sdata添加到鏈表中;

i=0;

sdata="";

goto (9); }//即最后一個計算項的處理

(3)if (f==0 and ch=="+" )

do

{此sdata字符串作為一個計算項添加到鏈表中;

i=0;

sdata="";

goto (1);}

try{處理計算項拼寫異常;}

(4)i++;

(5)if ( ch=="(" ) f++;

(5)if ( ch==")" ) f--;

(6)if !(ch=="+"){ sdata=sdata+ch;} //剔除布爾表達式非括號中的或運算符“+”

(8) goto (1)

(9)end

從預處理可知,各個計算項及其產生式的匹配關系就能夠精準定位,但是,識別的計算項任然是布爾表達式,可能存在三種情況,或是獨立邏輯元素項;或是邏輯元素的與運算項、非運算項;或是存在括號組合的式子,對前兩種運算式可直接用產生式(7)和產生式(2)就能夠匹配生成,對括號組合的式子需要進一步識別,直到識別出相應產生式[7-9]。

括號組合的式子的處理,首先,要對上述算法進行調整,一是對鏈表結點結構增加一個數據域,表明此計算項是否為具有括號運算,再是,當某個計算項sdata在進行識別的時候,一旦f>0,就可以設置對應數據域為1,表明此項含有括號運算。如果存在嵌套括號組合的式子,需要逐層進行識別,直到處理完所有括號計算項。Hi(i=1…m):表示第i次掃描的數據鏈表,鏈表結構如圖4。

另外,括號組合的式子存在兩種情形,一是完全由括號組織的式子,如:(…);另一種情況就是包含“非”運算的括號式子,如:!(…),根據前面的約定對此式構成:!@(…)二目運算格式,同理,對反變量也采用二目運算格式。

3 語法樹構造方法

通過預處理,得到若干鏈表組成的布爾表達式計算關系,按照自頂向下構造方法,并且采用最右推導法,就能夠快速建立基于文法 G的語法樹。

語法樹構造算法分析:

(1):創建根結點;

(2):按Hi,i=1 to m 掃描每一個Hi鏈表;

{

對H1,則存儲的是整個布爾表達式按照或運算的各計算項,若空,則是空樹;若只有一個結點,則樹只有一個葉子結點;若有多個結點,則選擇前兩個結點,按照產生式(1),構造語法樹,再用右結點與H1的后續結點,繼續構造語法樹,依次進行。直到H1構造完成為止。

}

(3):遍歷語法樹,對每個節點進行處理;

{

若是獨立邏輯變量,用產生式(4)和(7),逐層推進,直到生成葉子節點;

若是與運算式、非運算式(按約定條件),用產生式(2)、(4)和(7),逐層推進,直到生成葉子節點;

若是括號運算式,調用對應Hi,按照H1計算,產生語法樹,最后用產生式(3)、(4)和(7),逐層推進,直到生成葉子節點;

}

4 實驗結果

4.1 技術背景

實驗測試基于Microsoft Visual Studio 2008的Windows Presentation Foundation in .NET4.0(簡稱WPF)平臺[10],利用C#編寫測試軟件,實現邏輯函數的布爾表達式預處理和語法樹的構造。

4.2 數據結構的設計

數據結構主要有鏈表結點、語法樹結點和葉子結點三種,采用泛型數據。

4.2.1 鏈表結點

public class LinkNode

{

public T Data { set; get; } //數據域,當前結點數據

public T Flag { set; get; }

public LinkNode Next { set; get; } //位置域,下一個結點地址

public LinkNode (T item, T item1)

{

this.Data = item;

this.Flag = item1;

this.Next = null;

}

public LinkNode (T item) //構造頭結點

{

this.Data = item;

this.Next = null;

}

public LinkNode ()

{

this.Data = default(T);

this.Flag = default(T);

this.Next = null;

}

}

4.2.2 三叉樹結點

public class TreeNode

{

public T Data1 { set; get; }

public T Data2 { set; get; }

public TreeNode LNext { set; get; }

public TreeNode MNext { set; get; }

public TreeNode RNext { set; get; }

public TreeNode (T item, T item1)

{

this.Data1 = item;

this.Data2 = item1;

this.LNext = null;

this.MNext = null;

this.RNext = null;

}

public TreeNode (T item) //構造頭結點

{

this.Data = item;

this.Next = null;

}

public Node()

{

this.Data = default(T);

this.Flag = default(T);

this.Next = null;

}

}

4.2.3 葉子結點

public class LeafNode

{

public T Data1 { set; get; } //數據域,當前結點數據

public T Data12 { set; get; }

public LeafNode (T item, T item1)

{

this.Data1 = item;

this.Data2 = item1;

}

}

4.2.4 實驗分析與結果

用邏輯函數F=A+(A+B*C)+A*C+!(A+B)進行測試,實現鏈表的功能,構造了語法樹,現僅以鏈表給出實驗結果,如圖5。

圖5 邏輯函數生成的鏈表數據

5 結束語

通過對邏輯函數的預處理,建立布爾表達式的數據結構,解析了邏輯函數內在的計算關系,按照在自頂向下的語法樹構造方法,結合最右推導規則,以及約定條件,實現語法樹生成過程的回溯優化。

【參考文獻】

[1]黃沛杰,黃強,吳秀鵬,吳桂盛,郭慶文,陳楠挺,陳楚萍.語法和語義相結合的中文對話系統問題理解研究[J].中文信息學報.2014年11月.第28卷,第6期70-78.

[2]Ch Youngblut. Educational uses of virtual reality technology [R].

Institute for Defense Analysis, IDA Document D-2128. Alexandria,VA: Insitute for Defense Analyses, January 1998.

[3]Ouyang Yang, Dong Yabo, Zhu Miaoliang, et al. ECVlab: A web-based Virtual Laboratory System for Electronic Circuit Simulation [C]// Proceedings of International Conference on Computational Science. Germany: Springer, 2005: 1027-1034.

[4]石野,黃龍和,車天陽,高斯,王健.基于語法樹的程序相似度判定方法[J].吉林大學學報( 信息科學版).2014年1月第32 卷第1期95-100.

[5]C C Ko, B M Chen, S Y Hu, et.al. A web-based virtual laboratory on afrequency modulation experiment [J]. IEEE Transactions on Systems,Man, and Cybernetics, Part C: Applications and Reviews (S1094-6977), 2001, 31(3): 295-303.

[6]張素琴,呂映芝,蔣維杜,戴桂蘭.編譯原理(第2版)[D].清華大學出版社,2005年2月第版.

[7]王鑒全,季紹波.基于中文語法樹的概念圖挖掘研究[J].大連海事大學學報.2012年11月.第38卷第4期52-55.

[8]許萌.應用于詞法分析器的算法分析優化[J].科教之窗,2017 年第5 期,154-155.

[9]楊超,朱東華,衡曉帆,汪雪鋒.基于語法樹的SAO結構識別方法研究[J].圖書情報工作.第60 卷第21 期2016 年11 月 113-121.

[10]Matthew MacDonald. Pro WPF in C# 2010: Windows Presentation Foundation in .NET4.0[D].清華大學出版社,2011年6月第1版.

主站蜘蛛池模板: 国产永久无码观看在线| 亚洲欧美成aⅴ人在线观看| 日本在线免费网站| 国产一区二区三区免费| 亚洲综合片| 在线免费a视频| 乱人伦99久久| 国产精品视屏| a在线亚洲男人的天堂试看| 操国产美女| 无码国产偷倩在线播放老年人 | 国产在线观看91精品| 九九热精品视频在线| 国产三级视频网站| 国产96在线 | 亚洲男人的天堂久久精品| 精品無碼一區在線觀看 | 日本黄色不卡视频| 日韩亚洲综合在线| 国产成人久久综合一区| 成·人免费午夜无码视频在线观看| 久久99国产综合精品1| 国产XXXX做受性欧美88| 国产真实乱了在线播放| 色综合热无码热国产| 尤物在线观看乱码| 亚洲国产天堂久久九九九| 美女无遮挡免费视频网站| 亚洲精品爱草草视频在线| 少妇露出福利视频| 免费人欧美成又黄又爽的视频| 91亚洲免费| 国产丝袜啪啪| 国内自拍久第一页| 日韩国产综合精选| 久久午夜影院| 国产精品亚洲五月天高清| 亚洲国产AV无码综合原创| 红杏AV在线无码| 国产一级小视频| 色AV色 综合网站| 欧美一区二区福利视频| 亚洲无码免费黄色网址| 国产一区二区三区在线观看免费| 国模私拍一区二区| 久久成人免费| 中国一级特黄大片在线观看| 一级不卡毛片| 亚洲AⅤ无码国产精品| 国产区网址| 亚洲第一区欧美国产综合| 亚洲人成网18禁| 成人在线亚洲| 色偷偷男人的天堂亚洲av| 久久国产免费观看| 国产交换配偶在线视频| 久热中文字幕在线| 欧美三级自拍| 欧美黑人欧美精品刺激| 中国丰满人妻无码束缚啪啪| 国产区91| 91久久偷偷做嫩草影院精品| 亚洲视频免费在线看| 韩日免费小视频| 亚洲一级色| 色婷婷天天综合在线| 国产亚洲欧美日本一二三本道| 国产成人麻豆精品| 91毛片网| 国产福利不卡视频| 在线观看91精品国产剧情免费| 试看120秒男女啪啪免费| 91成人免费观看在线观看| 六月婷婷精品视频在线观看 | 国产高清在线丝袜精品一区| 色婷婷在线影院| 十八禁美女裸体网站| 久久亚洲精少妇毛片午夜无码 | 欧美午夜在线播放| 在线观看国产网址你懂的| 欧美精品1区| 亚洲高清资源|