隨想:如果用強化學習的方法來求解方程,肯定也是可行的。畢竟強化學習歸根結底是乙個最優化問題,雖然不能用顯示的方程來描述,但強化學習的求解過程與文中提到的迭代方法無異。以目前的演算法及機器效能來看,強化可以求解複雜度很高的方程。如果以此來吸參數學家關注這一領域,那麼強化將會得到長足發展。
打破線性方程求解速度極限,華人學者新演算法獲頂會最佳**獎以下為問題簡單描述。
求解方程的全新的思路,靠「猜」,這種方法就是:猜測每個未知數的值,把它們代入方程後,檢視結果與實際值相差有多大。然後,修正未知數的值,再猜一次。這種方法,在計算機方向上被稱為迭代法。彭泱的這種迭代演算法,在方程的數量變得極多、且每個方程涉及的未知數較少時,顯示出了巨大的優勢。也就是說,如果在乙個係數矩陣屬於「稀疏矩陣」——矩陣本身特別大,但相對地,係數為0的數量又非常多的時候,迭代法就會出現神奇的結果。
此前,沒有人能夠證明,「迭代法」對於稀疏矩陣而言,是否會比「矩陣乘法」更快。當然,這種演算法並不只靠「猜」。彭泱設計的演算法中,他們還會在給出多組隨機數的同時,將這些隨機數組平行計算。這就像是數百個人同時在山林中搜尋寶藏,肯定比乙個人反覆搜尋要更快。但這種演算法的設計,還面臨兩個難點:
如何保證設計出來的數,足夠隨機、不偏向問題的任何一部分?
如何保證設計出來的這些隨機數組,全面覆蓋每一種可能性?
他們發現,正因為由隨機數構造出的矩陣中,項數是隨機的、且彼此之間有著某種關聯,因此,這一矩陣本身就具有某種對稱性。這就意味著,如果知道矩陣中某些具體的數值,就能推斷出一整個矩陣的形狀。這一發現,使得他們設計的演算法,比未考慮矩陣對稱性的那些演算法,找到解的速度更快。事實證明,這種演算法確實能夠保證在o(n2.3316)複雜度以內,完成任何計算。這比之前的o(n2.37286),複雜度降低了不少,可以說是乙個巨大的進步。
這一新發現,讓彭泱和他的合作者獲得了acm-siam離散演算法研討會soda 2021的最佳**獎。
為什麼要降低計算複雜度?
解乙個二元一次方程,也就是2×2的矩陣,靠中學知識就能輕鬆搞定。然而當n變得越來越大,求解方程的計算量就會以3次方的速度迅速增加。這是什麼概念?意味著如果線性問題中,要求解的未知數達到100甚至10000,那麼計算量複雜度就會增加1000000、甚至1012倍。目前,機器學習、動力學模擬等問題,都會遇到超大規模線性方程組,如何降低計算複雜度,一直是學者們致力於解決的問題。要是計算複雜度居高不下,對於計算機而言,將會是乙個巨大而沉重的負擔。因此,數學家們一直在想方設法將線性問題的複雜度弄得更小一點,也就是讓o(nω)中的ω變小。哪怕ω減小的量只有0.00001,對於上百萬未知數的方程組來說也是乙個巨大的進步。通過不斷改善矩陣乘法,ω先是從3降低到2.81,歷經多次研究後,被mit和哈佛的數學家們降低到2.37286。然而,到這個階段,數學家們傾盡全力所設計的新演算法,也只是將ω降低了0.00001而已。有數學家進行過**,ω可以無限接近於2,也就意味著這種線性問題的計算複雜度還能盡力向o(n²)靠攏。因此,彭泱他們的新演算法,可以說是將這一研究向前推動了一大步
64 雞兔同籠
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸...
例題 雞兔同籠
問題描述 乙個籠子裡面關了雞和兔子 雞有2隻腳,兔子有4隻腳,沒有例外 已經知道了籠子裡腳的總數a,問籠子裡面至少有多少只動物,至多有多少只動物?輸入資料 第一行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔一行,每行包含乙個正整數a a 32768 輸入要求 輸入包含n行,每行對應乙個輸入,...
acm雞兔同籠
描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入 第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸出雞兔的個數,或者no answer 樣例輸入 2 14 32 ...