首页 > 其他分享 >BMF学习笔记

BMF学习笔记

时间:2022-12-20 22:12:30浏览次数:54  
标签:map BMF ++ List reduce 笔记 学习 inits tails

前言:这应该是下半学期(甚至可以说整个学期,因为上半期haskell感觉在铺垫)计算概论课主要想讲的内容了

Bird Meertens Formalism (BMF)

应该是一种计算理论?

是建立在半群(幺半群)上的理论

沿袭FP的思想,把算法描述成函数组合的形式(在这里可以看出FP的高妙之处,就是用函数组合的方式,使得我们的算法可以利用等式进行推导)

而怎么推导呢,就需要利用一些理论

引入了同态概念之后,又多了很多推导的等式

同态(Homomorphism):简单来说,就是在两个群之间映射,满足如果第一个群里有a\(\oplus\)b=c,那么第二个群里有f(a)\(\otimes\)f(b) = f(c)

而我们熟知的List,就是一个幺半群,对它可以衍生出很多同态函数


一些记号和约定:

f*表示map,对List里所有元素施加f

⊕/表示reduce,把List里的元素按顺序从左向右用⊕连起来计算

⊕→/e or ⊕←/e 表示foldl/foldr,把List里的元素从e开始复合从左向右/从右向左运算,e可以不给出直接算

⊕→//e or ⊕←//e表示accumulation,就是把foldl/foldr计算的每一个值都记下来,按原顺序顺塞到一个List里

inits,所有前缀的集合,inits = (++→//[]) · [·]∗

tails,所有后缀的集合,tails = (++←//[]) · [·]∗


一些Tips

无疑map和reduce是两个Homomorphism

而所有homo都可以表示成reduce和map的复合,证明很有意思

即:h = ⊕/ · f∗

显然
(⊕→/) · ([a]++) = ⊕→/a
(⊕←/) · (++[a]) = ⊕←/a


一些法则

map distributivity
(f · g)∗ = (f∗) · (g∗)


map && reduce promotion

f∗ · ++/ = ++/ · (f∗)∗
⊕/ · ++/ = ⊕/ · (⊕/)∗


Accumulation Lemma

(⊕→//e) = (⊕→/e) ∗ ·inits
(⊕→//) = (⊕→/) ∗ ·inits+


Horner's rule

如果两个同态 ⊗ 对 ⊕ 满足右结合律:
(a ⊕ b) ⊗ c = (a ⊗ c) ⊕ (b ⊗ c)

那么
⊕/ · ⊗/∗ ·tails = ⊙→/e
where
e = id⊗
a ⊙ b = (a ⊗ b) ⊕ e


一些经典推导

The Maximum Segment Sum (mss) Problem

segs = ++ / · tails ∗ ·inits

即所有非空子串

mss
= { definition of mss }
↑ / · +/ ∗ ·segs
= { definition of segs }
↑ / · +/ ∗ · ++ / · tails ∗ ·inits
= { map and reduce promotion }
↑ / · (↑ / · +/ ∗ ·tails) ∗ ·inits
= { Horner’s rule with a ⊙ b = (a + b) ↑ 0 }
↑ / · ⊙→/ 0 ∗ ·inits
= { accumulation lemma }
↑ / · ⊙→// 0

标签:map,BMF,++,List,reduce,笔记,学习,inits,tails
From: https://www.cnblogs.com/deaf/p/16995217.html

相关文章

  • 关于Iceberg数据湖的Temp笔记
    ​​实践数据湖iceberg第一课入门​​实践数据湖iceberg第二课iceberg基于hadoop的底层数据格式实践数据湖iceberg第三课在sqlclient中,以sql方式从kafka读数据到icebe......
  • 『NLP学习笔记』Transformer技术详细介绍
    Transformer技术详细介绍!文章目录​​一.整体结构图​​​​二.输入部分​​​​2.1.词向量​​​​2.2.位置编码​​​​三.注意力机制​​​​3.1.注意力机制的本......
  • 『NLP学习笔记』BERT技术详细介绍
    BERT技术详细介绍文章目录​​一.BERT整体模型架构​​​​1.1.Attention机制​​​​1.2.基础架构-Transformer中的Encoder​​​​1.3.BERT输入的三部分​​​​二.......
  • 『论文笔记』基于度量学习的行人重识别方法中损失函数总结!
    基于度量学习的行人重识别方法中损失函数总结!文章目录​​一、对比损失(Contrasiveloss)​​​​二、三元组损失(Tripletloss)​​​​三、改进三元组损失(Improvedtripl......
  • JS学习笔记9_JSON
    1.JSON概述JavaScriptObjectNatation,js对象表示法,(像XML一样)是一种数据格式,它与js有相同的语法形式P.S.一点小历史:JSON之父是道格拉斯,《JavaScript语言精粹》的作者,创造JSO......
  • Delphi 经典游戏程序设计40例 的学习 例40 动画检查器
     unitR40;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,Buttons,StdCtrls,Clipbrd,ExtCtrls;......
  • .net core 5,6,7【多线程笔记】取消令牌(CancellationToken)
    介绍在使用C#异步的场景,多多少少会接触到CancellationTokenSource。它和取消异步任务相关的,CancellationToken就是它生产出来的。演示任务取消执行回调vartokenSource......
  • FreeSWITCH学习笔记:XML配置文件
    本文更新于2022-12-20,使用FreeSWITCH1.10.7。目录加载顺序autoload_configs/autoload_configs/acl.conf.xmlautoload_configs/callcenter.conf.xmlautoload_configs/cdr_......
  • 机器学习——人脸识别判断表情
    (一) 选题背景随着机器学习和深度神经网络两个领域的迅速发展以及智能设备的普及,人脸识别技术正在经历前所未有的发展,关于人脸识别技术讨论从未停歇。目前,人脸识别精度已......
  • Java学习笔记1
    1.注释​ 注释是对代码的解释和说明文字。Java中的注释分为三种:单行注释://这是单行注释文字多行注释:/*这是多行注释文字这是多行注释文字这是多行注释文字......