導航:首頁 > 源碼編譯 > lambda演算法

lambda演算法

發布時間:2022-06-30 22:27:32

『壹』 python 中的 lambda 和lambda 有什麼區別

數學上的lambda用來是用表達式記錄演算法...起文檔作用..
python的lambda是一種語法用來設計程序
就好比python的加法和數學的加法的區別。

『貳』 最近接觸COMMON LISP 裡面的lambda很不理解 看了一個例子 楞是沒看懂

例1:中函數表達中 (* (- y z)) ,缺X項描述,如果改為 (* x (- y z)),則相當於(5X(20-14)=30.
問題補充中:#號無意義,省去後,函數結果為(214 315)
計算過程是:先計算 (mapcar '(lambda (z) (+ 10 z)) '(4 5 6)) ,得到(14 15 16)
再計算(mapcar '(lambda (x y) (+ x y))
(mapcar '(lambda (z) (+ 10 z)) '(4 5 6)
'(200 300)
)
等同於計算
(mapcar '(lambda (x y) (+ x y))
'(14 15 16)
'(200 300)
)
依次計算表中 (200+14=214 ), (300+15=315),得到 '(214 315),回答完畢。
祝你解決困惑。

『叄』 python里ip地址數字,lambda表達式看不懂

將輸入的ip字元串,按.分割,變成list,然後倒序
排列,然後進行演算法 256*j*int(i)

所以
0.1.2.3
相當於
256^0*3+256^1*2+256^2*1+256^4*0

『肆』 強化學習中 lambda演算法中 lambda取值為1時等價於哪個模型

如果從學習的角度看,演算法最重要,至少找工作時演算法是必考的;
從解決實際問題的角度看,懂得如何建模和求解模型是比較重要的;
但是如果從掙錢的角度看,誰如果手裡有別人沒有的數據,那才是大爺。

『伍』 λ演算的非形式化的描述

在 lambda 演算中,每個表達式都代表一個只有單獨參數的函數,這個函數的參數本身也是一個只有單一參數的函數,同時,函數的值是又一個只有單一參數的函數。函數是通過 lambda 表達式匿名地定義的,這個表達式說明了此函數將對其參數進行什麼操作。例如,「加 2」函數 f(x) = x + 2 可以用 lambda 演算表示為 λ x. x + 2 (λ y. y + 2 也是一樣的,參數的取名無關緊要) 而 f(3) 的值可以寫作 (λ x. x + 2) 3。函數的作用 (application) 是左結合的:f x y = (f x) y。考慮這么一個函數:它把一個函數作為參數,這個函數將被作用在 3 上:λ x. x 3。如果把這個 (用函數作參數的) 函數作用於我們先前的「加 2」函數上:(λ x. x 3) (λ x. x+2),則明顯地,下述三個表達式:
(λ x. x 3) (λ x. x+2) 與 (λ x. x + 2) 3 與 3 + 2
是等價的。有兩個參數的函數可以通過 lambda 演算這么表達:一個單一參數的函數的返回值又是一個單一參數的函數 (參見 Currying)。例如,函數 f(x, y) = x - y 可以寫作 λ x. λ y. x - y。下述三個表達式:
(λ x. λ y. x - y) 7 2 與 (λ y. 7 - y) 2 與 7 - 2
也是等價的。然而這種 lambda 表達式之間的等價性無法找到一個通用的函數來判定。
並非所有的 lambda 表達式都可以規約至上述那樣的確定值,考慮
(λ x. x x) (λ x. x x)

(λ x. x x x) (λ x. x x x)
然後試圖把第一個函數作用在它的參數上。 (λ x. x x) 被稱為 ω 組合子 (combinator),((λ x. x x) (λ x. x x)) 被稱為 Ω,而 ((λ x. x x x) (λ x. x x x)) 被稱為 Ω2,以此類推。
若僅形式化函數作用的注記而不允許 lambda 表達式,就得到了組合子邏輯 (combinatory logic)。 形式化地,我們從一個標識符 (identifier) 的可數無窮集合開始,比如 {a, b, c, ..., x, y, z, x1, x2, ...},則所有的 lambda 表達式可以通過下述以 BNF 範式表達的上下文無關文法描述:
<expr> ::= <identifier>
<expr> ::= (λ <identifier> . <expr>)
<expr> ::= (<expr> <expr>)
頭兩條規則用來生成函數,而第三條描述了函數是如何作用在參數上的。通常,lambda 抽象 (規則 2) 和函數作用 (規則 3) 中的括弧在不會產生歧義的情況下可以省略。如下假定保證了不會產生歧義:(1) 函數的作用是左結合的,和 (2) lambda 操作符被綁定到它後面的整個表達式。例如,表達式 ((λ x. (x x)) (λ y. y)) 可以簡寫成 (λ x. x x) λ y.y。
類似 λ x. (x y) 這樣的 lambda 表達式並未定義一個函數,因為變元 y 的出現是自由的,即它並沒有被綁定到表達式中的任何一個 λ 上。變元出現次數的綁定是通過下述規則 (基於 lambda 表達式的結構歸納地) 定義的:
在表達式 V 中,V 是變元,則這個表達式里變元 V 只有一次自由出現。
在表達式 λ V . E 中 (V 是變元,E 是另一個表達式),變元自由出現的次數是 E 中變元自由出現的次數,減去 E 中 V 自由出現的次數。因而,E 中那些 V 被稱為綁定在 λ 上。
在表達式 (E E' ) 中,變元自由出現的次數是 E 和 E' 中變元自由出現次數之和。
在 lambda 表達式的集合上定義了一個等價關系 (在此用 == 標注),「兩個表達式其實表示的是同一個函數」這樣的直覺性判斷即由此表述,這種等價關系是通過所謂的「alpha-變換規則」和「beta-消解規則」。
α-變換
Alpha-變換規則表達的是,被綁定變數的名稱是不重要的。比如說 λx.x 和 λy.y 是同一個函數。盡管如此,這條規則並非像它看起來這么簡單,關於被綁定的變數能否由另一個替換有一系列的限制。
Alpha-變換規則陳述的是,若 V 與 W 均為變元,E 是一個 lambda 表達式,同時 E[V/W] 是指把表達式 E 中的所有的 V 的自由出現都替換為 W,那麼在 W 不是 E 中的一個自由出現,且如果 W 替換了 V,W 不會被 E 中的 λ 綁定的情況下,有
λ V. E == λ W. E[V/W]
這條規則告訴我們,例如 λ x. (λ x. x) x 這樣的表達式和 λ y. (λ x. x) y 是一樣的。
β-消解
Beta-消解規則表達的是函數作用的概念。它陳述了若所有的 E' 的自由出現在 E [V/E' ] 中仍然是自由的情況下,有
((λ V. E ) E' ) == E [V/E' ]
成立。
== 關系被定義為滿足上述兩條規則的最小等價關系 (即在這個等價關系中減去任何一個映射,它將不再是一個等價關系)。
對上述等價關系的一個更具操作性的定義可以這樣獲得:只允許從左至右來應用規則。不允許任何 beta 消解的 lambda 表達式被稱為範式。並非所有的 lambda 表達式都存在與之等價的範式,若存在,則對於相同的形式參數命名而言是唯一的。此外,有一個演算法用戶計算範式,不斷地把最左邊的形式參數替換為實際參數,直到無法再作任何可能的消解為止。這個演算法當且僅當 lambda 表達式存在一個範式時才會停止。Church-Rosser 定理 說明了,當且僅當兩個表達式等價時,它們會在形式參數換名後得到同一個範式。
η-變換
前兩條規則之後,還可以加入第三條規則,eta-變換,來形成一個新的等價關系。Eta-變換表達的是外延性的概念,在這里外延性指的是,兩個函數對於所有的參數得到的結果都一致,當且僅當它們是同一個函數。Eta-變換可以令 λ x . f x 和 f 相互轉換,只要 x 不是 f 中的自由出現。下面說明了為何這條規則和外延性是等價的:
若 f 與 g 外延地等價,即,f a == g a 對所有的 lambda 表達式 a 成立,則當取 a 為在 f 中不是自由出現的變數 x 時,我們有 f x == g x,因此 λ x . f x == λ x . g x,由 eta-變換 f == g。所以只要 eta-變換是有效的,會得到外延性也是有效的。
相反地,若外延性是有效的,則由 beta-消解,對所有的 y 有 (λ x . f x) y == f y,可得 λ x . f x == f,即 eta-變換也是有效的。 在 lambda 演算中有許多方式都可以定義自然數,但最常見的還是Church 整數,下面是它們的定義:
0 = λ f. λ x. x
1 = λ f. λ x. f x
2 = λ f. λ x. f (f x)
3 = λ f. λ x. f (f (f x))
以此類推。直觀地說,lambda 演算中的數字 n 就是一個把函數 f 作為參數並以 f 的 n 次冪為返回值的函數。換句話說,Church 整數是一個高階函數 -- 以單一參數函數 f 為參數,返回另一個單一參數的函數。
(注意在 Church 原來的 lambda 演算中,lambda 表達式的形式參數在函數體中至少出現一次,這使得我們無法像上面那樣定義 0) 在 Church 整數定義的基礎上,我們可以定義一個後繼函數,它以 n 為參數,返回 n + 1:
SUCC = λ n. λ f. λ x. f (n f x)
加法是這樣定義的:
PLUS = λ m. λ n. λ f. λ x. m f (n f x)
PLUS 可以被看作以兩個自然數為參數的函數,它返回的也是一個自然數。你可以試試驗證
PLUS 2 3 與 5
是否等價。乘法可以這樣定義:
MULT = λ m. λ n. m (PLUS n) 0,
即 m 乘以 n 等於在零的基礎上 n 次加 m。另一種方式是
MULT = λ m. λ n. λ f. m (n f)
正整數 n 的前驅元 (predecessesor) PRED n = n - 1 要復雜一些:
PRED = λ n. λ f. λ x. n (λ g. λ h. h (g f)) (λ u. x) (λ u. u)
或者
PRED = λ n. n (λ g. λ k. (g 1) (λ u. PLUS (g k) 1) k) (λ l. 0) 0
注意 (g 1) (λ u. PLUS (g k) 1) k 表示的是,當 g(1) 是零時,表達式的值是 k,否則是 g(k) + 1。 習慣上,下述兩個定義 (稱為 Church 布爾值) 被用作 TRUE 和 FALSE 這樣的布爾值:
TRUE = λ u. λ v. u
FALSE = λ u. λ v. v
斷言是指返回布爾值的函數。最基本的一個斷言 ISZERO,當且僅當其參數為零時返回真:
ISZERO = λ n. n (λ x. FALSE) TRUE
斷言的運用與上述 TRUE 和 FALSE 的定義,使得 if-then-else 這類語句很容易用 lambda 演算寫出。 遞歸是一種以函數自身迭代自身變元的演算法,一般是通過函數自身來定義函數的方式實現。表面看來 lambda 演算不允許遞歸,其實這是一種對遞歸的誤解。考慮階乘函數 f(n) 一般這樣遞歸地定義:
f(n) = 1, 若 n = 0; n·f(n-1), 若 n>0. FACT = λ n. n (λ u. MULT n (FACT (PRED n))) 1
用 Y-組合子 在 λ語言 中合法地定義:
FACT = Y (λ g. λ n. n (λ u. MULT n (g (PRED n))) 1)
Y = λ f. ((λ x. f (x x)) (λ x. f (x x)))

『陸』 lambda如果m=a則1 ,如果m=b則2…

逐步分析演算法中的各語句的功能,
第一個條件結構是比較a,b的大小,
並將a,b中的較小值保存在變數m中,
第二個條件結構是比較a,c的大小,
並將a,c中的較小值保存在變數m中,
故變數m的值最終為a,b,c中的最小值.
由此程序的功能為求a,b,c三個數的最小數,∴m=2.
故選C.

閱讀全文

與lambda演算法相關的資料

熱點內容
西安java培訓 瀏覽:298
蘋果用戶app如何退款 瀏覽:889
解壓方式就是喝酒 瀏覽:396
麥塊怎麼添加到游戲伺服器 瀏覽:962
噴油螺桿製冷壓縮機 瀏覽:581
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251