C語言基于dag的基本塊優化,基于dag的基本塊優化參考.docx

基于dag的基本塊優化參考

基于DAG的基本塊優化1.實驗目的與任務了解基本塊的DAG表示及其應用,掌握局部優化的基本方法。2.實驗要求設計一個轉換程序,把由四元式序列表示的基本塊轉換為DAG,并在構造DAG的過程中,進行合并已知量、刪除無用賦值及刪除公共子表達式等局部優化處理。最后再從所得到的DAG出發,按原來生成DAG各個結點的順序,重建四元式序列形式的基本塊。3.實驗內容(1)DAG的結點類型只考慮0型、1型和2型,如下表所示。類型四元式DAG結點0型(=,B, ,A) ①AB1型(op,B, ,A)② op①2型(op,B,C,A)(=[ ],B,C,A)(jrop,B,C,A)(2)由基本塊構造DAG算法如下:while(基本塊中還有未處理過的四元式) {取下一個四元式Q;newleft=newright=0;if(getnode(B)= =NULL){makeleaf(B);newleft=1;} switch(Q的類型){case 0 :n= getnode(B);insertidset(n,A);break;case 1: if(isconsnode(B)){p=calcons(Q.op,B);if(newleft= =1) /* getnode(B)是處理Q時新建結點 */delnode(B);if((n=getnode(p))= =NULL){makeleaf(p);n=getnode(p);}}else{if((n=findnode(Q.op,B))= =NULL)n=makenode(Q.op,B);}insertidset(n,A);break;case 2: if(getnode(C)= =NULL){makeleaf(C);newright=1;}if(isconsnode(B) && isconsnode(C)){p=calcons(Q.op,B,C);if(newleft==1) /* getnode(B)是處理Q時新建結點 */delnode(B);if(newright==1) /* getnode(C)是處理Q時新建結點 */delnode(C);if((n=getnode(p))= =NULL){makeleaf(p);n=getnode(p);}}else{if((n=findnode(Q.op,B,C))= =NULL)n=makenode(Q.op,B,C);}insertidset(n,A);break;}}}上述算法中應設置如下的函數:getnode(B):返回B(可以是標記或附加信息)在當前DAG中對應的結點號。makeleaf(B):構造標記為B的葉子結點。isconsnode(B):檢查B對應的結點是否為標記為常數的葉子結點。calcons(Q.op,B):計算op B 的值(即合并已知量)。它的另一種調用形式是calcons(Q.op,B,C):計算B op C 的值。delnode(B):刪除B(結點的標記)在當前DAG中對應的結點。findnode(Q.op,B):在當前DAG中查找并返回這樣的結點:標記為op,后繼為getnode(B)(即查找公共子表達式op B)。它的另一種調用形式是findnode (Q.op,B,C) (即查找公共子表達式B op C)。makenode(Q.op,B,C):構造并返回標記為op,左右后繼分別為getnode(B)、getnode(C)的內部結點。insertidset(n,A):若getnode(A)=NULL,則把A附加到結點n;否則,若A在getnode(A)的附加標識符集中,且getnode(A)無前驅或雖有前驅但getnode(A) 附加標識符集中符號數大于1,則把A從getnode(A)的附加標識符集中刪除(即刪除無用賦值)。請實現上述基本塊的DAG構造算法,并添加從所得DAG按原來生成DAG各個結點的順序,重建四元式序列的功能。(3)測試用例用下面的基本塊作為輸入:(1) T1 = A * B(2) T2 = 3 / 2(3) T3 = T1 ― T2(4) X = T3 (5) C = 5(6) T4 = A * B(7) C = 2(8) T5 = 18 + C(9) T6 = T4 * T5(10) Y = T6基本塊的DAG如下:按生成DAG各個結點的順序,重建四元式序列如下:(1) T1 = A * B(2) T2 = 1.5(3) T3 = T1 ― 1.5(4) X = T3 (5) T4 = T1(6) C = 2(7) T5 = 20(8) T6 = T1 * 20(9) Y = T6Code.txt文件內容T1 = A * BT2 = 3 / 2T3

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287121.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287121.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python可視化】Windows 10系統上Pyecharts安裝教程

簡單的Python庫,如Numpy,可以直接在PyCharm中自動下載并安裝。 同添加Python環境變量一樣,需要先添加pip環境變量。pip位于C:\Python27\ArcGIS10.8\Scripts路徑下。 WinR→cmd: 安裝完成!

使用.Net分析.Net達人挑戰賽參與情況

背景C#是我2012年在大學課程中接觸的,.NET Framework 我也一直使用至今。從2014年.NET 開源,2019年發布.NET Core 3 的時候,公司剛好有 Nvidia Jetson 平臺 Linux 嵌入式設備的開發任務,.NET 又剛是適用于 Windows, Linux, 和 mac…

Android之RecycleView實現指定范圍的拖動效果

1 問題 在RecycleView里面實現指定位置的拖動效果,(這里是實現線性布局的,不是網格布局的) @Overridepublic boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {Log.i(TAG, "onMove viewHolder.getA…

十分鐘如何學會C語言?掌握規律舉一反三考試提50分!

前言 上周寫了一篇 20 分鐘學會 C 語言與Python的文章——《一萬字一篇文20分鐘學會C語言和Python,十四年編程經驗老鳥傳授經驗之道》,之后見粉絲轉了一個話題“十分鐘如何學會C語言”,我就在想是否能夠十分鐘呢?答案是可以的&am…

異常何時去捕獲

在業務邏輯層捕獲異常。 工具類中不可處理異常,有異常要向外拋!!!轉載于:https://www.cnblogs.com/swbzmx/p/5643756.html

c語言在win8系統不兼容,Win8系統中存在不兼容軟件如何解決?

最近有剛升級Win8系統的用戶反映,FastStone Capture截圖軟件在Win7系統中可以兼容,正常打開,可是在Win8系統中就不能兼容了,這讓用戶非常煩惱。那么,Win8系統中存在不兼容軟件如何解決呢?下面,我…

Python 3.6出現報錯解決方案:No Python 3.6 installation was detected,無法卸載Python

卸載Python 3.6時錯誤提示,No Python 3.6 installation was detected。 解決辦法是,先右鍵→更改→Repair。 然后再卸載,完成!

Android之解決ScrollView嵌套RecycleView導致滑動沖突或者顯示不全的問題

1 問題 ScrollView嵌套RecycleView導致滑動沖突或者顯示不全的問題 2 解決辦法 1)、ScrollView替換成普通布局,然后RecycleView用的BaseMultiItemQuickAdapter多布局來寫,也就是整個頁面只有一個RecycleView,用來取代ScrollView…

MASA Auth - 權限設計

權限術語Subject:用戶,用戶組Action:對Object的操作,如增刪改查等Object:權限作用的對象,也可以理解為資源Effect:規則的作用,如允許,拒絕Condition:生效條件…

iOS js oc相互調用(JavaScriptCore)

http://blog.csdn.net/lwjok2007/article/details/47058795轉載于:https://www.cnblogs.com/wlsxmhz/p/5645985.html

Android怎么自定義listview布局,Android ListView自定義布局

編輯:找一個 “開箱即用” 的帖子的末尾例子!因為你看到多行受到影響我猜它有些事情要做系統如何回收資源,也許對Button的引用是不明確的。我不確定我在哪里選擇了這種做法(Android教程或我們以前的開發人員通過這些教程學習了Android)。然而…

【必懂】C語言水仙花數題解

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我,若你是真心學習可以送你書籍,指導你學習,給予你目標方向的學習路線,無套路,博客為證。 前言 本專欄內容將會以輕松、簡單的方式完成習題的解答,用…

Android之點擊圖片底部出現灰色圓圈效果

1 需求 點擊圖片底部出現灰色圓圈效果 2 代碼實現 1、num_oval_gray_def.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"androi…

【ArcGIS風暴】ArcGIS 10.8中計算體積的方法總結

ArcGIS 10.8提供了表面體積和面體積兩種計算體積的方法。 一、表面體積 用途:用于計算表面和參考平面之間區域的面積和體積。 Situation 1:參考面以上 Situation 2:參考面以下 Python腳本: import arcpy from arcpy import envarcpy.CheckOutExtension("3D")…

.NET7:更細致的時間

當年在做go時&#xff0c;很羨慕它的時間有微秒&#xff0c;納秒&#xff0c;在做性能優化時&#xff0c;能很小顆粒度的查看引入方法執行的時間&#xff0c;當時.net的DateTime只有毫秒&#xff08;雖然也有別的辦法獲取&#xff09;。現在&#xff0c;在最新的.NET7 Preview4…

集合轉數組

akdfajf //集合轉數組 // StringBuffer sql new StringBuffer(); // String[] arr new String[hjPztTalentInfos.size()]; // for (int i 0; i < hjPztTalentInfos.size(); i) { // arr[i] hjPztTalen…

Android之解決AppBarLayout 下面一道陰影

1 問題 AppBarLayout 下面寫了其它布局&#xff0c;但是當這個布局滑動到上面時候&#xff0c;AppBarLayout 下面有一道陰影 2 解決辦法 對AppBarLayout設置一個屬性&#xff1a; app:elevation"0dp"

案例:無人測量船水庫水下地形測量及庫容量計算

本文講解利用南方方洲號無人船,該系統可用于水下地形地貌測繪、水庫庫容測量、水文勘測、疏浚檢測、水環境監測等領域。 一、無人船水深測量 1、水岸線范圍的獲取 水岸線有助于布設航線,獲取方式有兩種: (1)無人船獲取 對于

小米android系統耗電量大,小米手機耗電快的解決方法,親測有效~

原標題&#xff1a;小米手機耗電快的解決方法&#xff0c;親測有效~各位機友大家好&#xff0c;據小安觀察&#xff0c;平臺故障報修的小米手機用戶還會蠻多的。那么今天就來講講小米手機的一些問題和解決方法&#xff0c;如果你感覺手機耗電較快&#xff0c;按照以下方式排查&…

【小白必懂】C語言最大、最小公約數題解

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 前言 本專欄內容將會以輕松、簡單的方式完成習題的解答&#xff0c;用…