2009-11-23 70 views
0

我頭腦風暴的想法是開發高級軟件來操縱矩陣代數方程,張量操作是精確的,使用幾個標準(如尺寸大小,系統上的可用內存等)生成優化的C++代碼。寫程序專家系統?

精神上類似於張量收縮引擎TCE的東西,但是專門針對生成優化代碼而非通用代碼。 所需的最終結果是在我的域中生成並行程序的專家。

  • 這種發展屬於專家系統的範疇嗎?
  • 什麼其他項目在那裏生產給定的約束代碼的同一地區工作?

回答

1

它不會被稱爲專家系統,至少不是傳統意義上的這個概念。

專家系統是基於規則的推理引擎,其中所涉及的專業知識顯然是封裝在規則。你所建議的系統雖然可能在各種線性代數模型內囊括關於問題領域本質的洞見,但它們會比專家系統更像黑盒子。一個專家系統的特點是,它們能產生自己的推理的「解釋」,而這樣的功能是可能的,部分原因是知識表示,雖然正式的,仍然接近自然語言簡單的語句;矩陣和對它們的操作,雖然可能源於類似的現實觀察,但透明度很差......

從問題描述中不清楚您提議的系統是否會優化現有代碼(可能在有限域),或者是否會出品優化的代碼,在這種情況下,推動海灣一些外部目標/功能...

0

井生產系統(規則系統)是四種一般的方法來計算一個(圖靈機,教堂遞歸函數,後期製作系統和馬爾可夫算法[和幾個已被添加到列表])它們或多或少具有這些相應的實現:命令式編程,函數式編程,基於規則的編程 - 就我所知,馬爾可夫算法沒有獨立的實現。這些都是圖靈等價物。

所以基於規則的編程可用於所有寫什麼。此外,早期的數學/符號操作程序通常使用基於規則的編程,直到問題得到充分理解爲止(隨後將方法改爲命令式或約束式編程 - 參見MACSYMA - 嗯,MACSYMA是用Lisp編寫的,所以也許我有一個不同的程序或者他們最初在Lisp中爲此實現了一個規則系統)。

你可以很容易地編寫一個規則系統來執行矩陣操作。您可以根據邏輯支持記錄實際發生的解決方案的規則(某些規則可能不會直接影響解決方案)。然後,對於每個規則,您都映射到一組C++指令(這些指令不必是「完整的」 - 它們的行爲更像一個半可執行的要求),它們作爲中間語言輸出。然後,解析器讀取它以將其鏈接到所需的輸入數據以及任何需要的修正。您可能會發現生成功能代碼更容易 - 在修復之後,您可以更輕鬆地優化功能源代碼中的輸出代碼。

說了這麼多,其他的貢獻者已經提出了一個領域特定語言的方法,那就是TED的人做了什麼,太(我的建議是,太多隻是使用規則)。