數學表達式一鍵變圖,CMU開發實用工具Penrose,堪稱圖解界LaTeX(附鏈接)

來源:七月在線實驗室

本文長度爲2000字,建議閱讀5分鐘

本文爲大家介紹了卡內基梅隆大學開發的一款可自動生成的新工具。

有 A、B 兩個集合,A 與 B 相交,C 是 A 與 B 的交集,分別將三個集合命名爲 Circles、Diagrams、Venn Diagrams。給出這樣一段描述,你要怎麼作圖?先畫兩個相交的圓,然後各自命名?太麻煩了!卡內基梅隆大學開發的一款新工具可以幫你自動生成。

在有些人眼裏,數學公式就是一堆數字和符號,但在另一些人看來,這些數字和符號是可以動的,而且極富美感。爲什麼會有這種差距?

那是因爲對於後者來說,這些數字和符號的背後是一幅靈動的圖,他們可以根據公式約定的規律進行變換,讓人感受到數學規律帶來的美感。

但問題在於,不是每個人都有這麼好的腦補能力,能將數學公式自動想象成圖。因此,我們需要藉助於工具。

說到工具,你可能想到的是 Adobe Illustrator 等廣泛使用的畫圖工具。沒錯,這些工具確實好用,但未免有點繁瑣,你要不斷地花時間手動調整座標等信息。

有沒有簡單一點的方法呢?類似於我來說,你來畫那種。卡內基梅隆大學開發的 Penrose 就是這樣一款工具。

你只需要描述一些數學關係或輸入數學表達式,該軟件就能自動幫你畫圖,從而將抽象的數學公式轉化爲直觀的圖,文章開頭給出的只是一個簡單的例子。

如果你不想用圓來表示上述關係,軟件還可以幫你換成箭頭表示。

不同於普通的圖形計算器,你輸入的表達式不僅限於基本函數,也可以是來自任何數學領域的複雜關係。

在設計之初,我們問自己《人們是如何在腦海中將數學公式轉換爲圖像的?》卡內基梅隆大學計算機科學系博士生 Katherine Ye 表示。我們系統的祕密武器就是讓人們能夠很容易地向電腦『解釋』這一轉換過程,然後將比較困難的作圖過程留給計算機。

爲了讓計算機理解人類所描述的關係,研究團隊還專門開發了一種編程語言:

如上圖所示,研究者用自己設計的編程語言表述了幾個集合的包含關係,即使沒學過這種編程語言的同學也能讀懂。根據這些描述可以生成如下圖形:

這款軟件的名字來源於著名數學家、物理學家羅傑 · 彭羅斯(Roger Penrose)。彭羅斯以善用圖表交流複雜的數學和科學思想而聞名。

想象一下,你從圖書館的書架上拿下一本塵封已久的數學書,將上面的內容輸入計算機,然後就能得到一本帶插圖、更容易理解的新書,這就是該研究團隊的願景,Penrose 只是邁向這個願景的第一步。

研究人員將在 SIGGRAPH 2020 大會上展示 Penrose。不過,Penrose 目前還處在開發階段,因此暫時無法上手。

論文地址:

http://penrose.ink/media/Penrose_SIGGRAPH2020.pdf

GitHub 地址:

https://github.com/penrose/penrose

這款工具到底有多好用

Penrose 可以把抽象的數學表示轉化成一或多個不同風格的視覺表示,研發團隊在視頻 demo 中展示了對多個不同領域數學表達式的轉化效果。

比如,幾何領域:

線性代數:

集合論:

函數:

看了該研究團隊給出的 demo 之後,有人稱讚道,這款工具可能變革科學和數學交流。

還有人將其比作科學圖表界的 LaTex:

那麼,用戶要怎麼操作才能實現上述效果呢?

界面和基本功能

我們首先來看 Penrose 的界面。

如下圖所示,界面頂部是該工具的基本功能和選項。

  • 左側第一個下拉框:表示用戶試圖轉化的數學公式所屬的領域,上圖示例顯示的是集合論(set theory);

  • 左側第二個框:可供用戶選擇想要生成的圖樣式,上圖選擇的是維恩圖(venn),用戶可以點擊該下拉框,選擇自己喜歡的樣式;

  • 右側run按鈕:點擊該按鈕,等待幾秒,即可得到左側數學內容所對應的圖。

只選擇數學領域還不夠,用戶還需要在界面左側填充數學內容。這裏需要注意的是界面第二行的sub、sty、dsl按鈕。

Penrose 的語言框架包含三部分:Domain schema(dsl)、Substance program(sub)和 Style program(sty)。

如下圖所示,這三部分分別表示:

  • dsl:數學領域中可用的對象、關係和符號;

  • sub:填充數學內容;

  • sty:從數學表述到視覺表示。

用戶可以逐個點擊這些按鈕,填充所需的數學內容,選擇所需的視覺表示形式。

高階優化操作

說完了基本功能,我們再來看優化操作。

  • 右下方resample按鈕:如果你對生成的圖不滿意,點擊該按鈕,即可重新生成圖;

  • autostep按鈕:實現圖的自動生成,如果你想對圖進行調整,只需禁用該功能即可。

UI 界面中的優化過程

Penrose 背後的技術

Penrose 團隊設計此工具的目標是:

  • 以用戶熟悉的方式表達數學對象;

  • 系統不侷限於固定的某些領域;

  • 對相同的數學內容進行不同的可視化展示;

  • 視覺複雜度方面不存在內在限制;

  • 速度快,支持迭代工作流;

  • 爲製圖所做的努力應該是可泛化和可重用的。

基於以上目標,該團隊制定了以下組織原則:

  • 通過從數學對象到視覺圖標的映射來規定圖;

  • 通過解決相關的約束優化問題來合成圖。

工作流程

下圖展示了 Penrose 的工作流程:

第一階段:用編程語言指定數學對象和視覺表示

Penrose 將數學內容與視覺表示分離開來,並使用 language-based specification 來提供該分離所需的抽象。

如前所述,Penrose 爲數學內容與視覺表示提供了兩種不同的語言:Substance 和 Style。

Substance 藉助精確的斷言(assertion)來詮釋標準的數學表述,參見下圖示例:

第二階段:基於優化的合成

Penrose 使用約束優化來合成與給定描述相對應的圖。這個方法主要是受到手繪圖的啓發:將視覺圖標放在畫布上,不斷地調整直到無需再改進。

此外,Penrose 用戶界面提供了插件接口,方便調用 Substance 和 Style 中的外部代碼,從而提供系統級的可擴展性。該插件系統可以幫助用戶集成可用於解決邏輯或圖難題的外部代碼。

目前,該項目已發佈在 GitHub。不過 Penrose 團隊表示,目前版本處於早期階段,仍在持續開發中。

感興趣的同學可以訪問 Penrose 網站,跟進更多信息。

網站地址:

http://www.penrose.ink/

編輯:王菁

校對:林亦霖


招聘信息

崗位: 開發運維工程師


職能:研發團隊支持——配合多個研發組,搭建、維護、優化Jenkins、禪道、數據庫、大數據平臺等,開發、支持持續集成(CI-CD)腳本和流程、軟件發佈管理,提高各個研發組的開發效率。深入研究運維相關技術以及新型軟硬件技術,包括運維自動化技術,虛擬化技術,監控技術,網絡技術等。對外提供數爲軟件系統的雲服務和培訓服務設施等。


招聘要求:本科學歷、帶有大數據系統(Hadoop、Kafka、ES、MongoDB、Jenkins等)使用經歷


入職單位: 清華大學軟件學院 大數據系統軟件國家工程實驗室 (工作地點:雙清大廈)


簡歷投遞地址:[email protected]
招聘日期:即日起至2020年7月16日

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章