Lindenmayer系統,簡稱L系統,是由荷兰烏特勒支大學的生物学和植物学家,匈牙利裔的阿里斯蒂德·林登麦伊尔(Aristid Lindenmayer)於1968年提出的有关生长发展中的细胞交互作用的数学模型,尤其被廣泛應用於植物生長過程的研究。
L-system是一系列不同形式的正规语法规则,多被用于植物生长过程建模,但是也被用于模拟各种生物体的形态。L-system也能用于生成自相似的分形,例如迭代函数系统。
起源
作为一位生物学家,Lindenmayer工作的内容是酵母菌和丝状真菌,并研究多种类型的海藻的生长模式,例如蓝绿细菌项圈藻(,淡水藻类的一种)。最初,L系统被设计成用于提供一种关于简单多细胞生物体生长的正规描述,并且试图证明植物细胞之间的紧密关系。不久以后,这个系统被扩展成描述高等植物及其复杂枝杈结构。
L-system 结构
L-system的自然递归规则导致自相似性,也因此使得分形一类形式可以很容易的使用L-system描述。植物模型和自然界的有机结构生成,非常相似并很容易被定义,因此通过增加递归的层数,可以缓慢生长并逐渐变得更复杂。L-system同样在制造人造生命领域。
L-system 语法与Chomsky语法非常相似,說到L-system通常指的是带参数的L-system,定义如下:
G={V,S,ω,P},
V:变量符号集合
S:常量符号集合
ω:初始状态串
P:产生式规则
自初始狀態開始迭代套入L-system的文法規則,和正規文法所產生的語言不同處在於,L-system在一次迭代中可同時套用許多不同的文法規則。如果在一次迭代中只能夠套用一個文法規則,產生出來的結果被稱為語言而不是L-system。由此可知,L-system為正規文法所產生出的語言的子集合。
L系统的例子
例1:海藻的生长
Lindenmayer研究海藻生长模式时提出的最早的L-系统:
:变量 : A B
:常量 : 无
:公理 : A
:规则 : (A → AB), (B → A)
迭代过程:
: n = 0 : A
: n = 1 : AB
: n = 2 : ABA
: n = 3 : ABAAB
: n = 4 : ABAABABA
: n = 5 : ABAABABAABAAB
: n = 6 : ABAABABAABAABABAABABA
: n = 7 : ABAABABAABAABABAABABAABAABABAABAAB
例1的解释
n=0: A 开始 (公理/起始点)
/ \
n=1: A B 根据规则(A → AB)起始点A拓展成AB,由于起始点没有B,规则(B → A)没有被用到
/| \
n=2: A B A AB中的A拓展成AB,B变成A,于是得到了ABA
/| | |\
n=3: A B A A B 可以看到每个A都是一个新的子树的根,由此引发出和整体结构同构的子结构。
/| | |\ |\ \
n=4: A B A A B A B A
如果我们观察这个序列的长度就会发现这是一个斐波那契数列——
1 2 3 5 8 13 21 34 55 89 ...
(因为我们选择从A开始,故第一个1少掉了)
如果我们把A看成一只成年兔子,B看成未成年兔子,那么这个构造和那个著名的兔生兔的构造是一致的。
即每个月B会成长成A,而A每个月又会生出一个B。
开放问题
许多涉及L-systems研究的问题有待解决,比如:
- 描述所有那些确定的局部连锁的上下文无关L-systems(目前已知完成解决的只有包含两个变量的这一种情况)。
- 给定一个结构,找出生成此结构的L-systems文法。
参考文献
外部連結
- [https://web.archive.org/web/20081225000136/http://www.math.okstate.edu/mathdept/dynamics/lecnotes/node12.html#SECTION00040000000000000000 David J. Wright's article on L-systems]
- [http://algorithmicbotany.org/ Algorithmic Botany at the University of Calgary]
- [http://www.mizuno.org/applet/branching/ Branching: L-system Tree] A Java applet of the botanical tree growth simulation using the L-system.
- [https://web.archive.org/web/20020503212834/http://spanky.triumf.ca/WWW/FRACTINT/lsys/truefractal.html Fractint L-System True Fractals]
- [https://web.archive.org/web/20090326080442/http://www.biologie.uni-hamburg.de/b-online/e28_3/lsys.html "An introduction to Lindenmayer systems", by Gabriela Ochoa]。Brief description of L-systems and how the strings they generate can be interpreted by computer.
- [http://sourceforge.net/projects/pplant/ "powerPlant" an open-source landscape modelling software]
- [https://web.archive.org/web/20080506072938/http://spanky.triumf.ca/www/fractint/fractint.html Fractint home page]
- [http://www.mh-portfolio.com/lsystems.html L-Systems in Architecture]
- [https://web.archive.org/web/20031220074045/http://www.generation5.org/content/2002/lse.asp A simple L-systems generator (Windows)]
- [https://web.archive.org/web/20081204101322/http://www.lab4web.com/chelmiger/lyndyhop/ Lyndyhop: another simple L-systems generator (Windows & Mac)]
- [http://www.cs.ucl.ac.uk/staff/W.Langdon/pfeiffer.html An evolutionary L-systems generator (anyos*)]
- [https://web.archive.org/web/20100616013924/http://pawfal.org/index.php?page=LsystemComposition "LsystemComposition"]. Page at Pawfal ("poor artists working for a living") about using L-systems and genetic algorithms to generate music.
- [http://www.grogra.de/ eXtended L-Systems (XL), Relational Growth Grammars, and open-source software platform GroIMP.]
- [http://to-campos.planetaclix.pt/fractal/plantae.htm A JAVA applet with many fractal figures generated by L-systems.]
- [https://web.archive.org/web/20091027012517/http://uk.geocities.com/joelewisbowen/lsystem.html Another L-system applet, supporting programming, with explanation and examples.]
- [https://web.archive.org/web/20090225060354/http://www.arch.columbia.edu/Students/Fall2003/Cheng.Chih-Wei/ L-systems in Architecture; genetic housing.]
- [http://www.somporn.net/ L-systems in Plant Growth,Simulation and Visualization (PlantVR).]
- [http://www.modularbrains.net/support/SteliosManousakis-Musical_L-systems.pdf Musical L-systems: Theory and applications about using L-systems to generate musical structures, from waveforms to macro-forms.]
- [https://web.archive.org/web/20090106210342/http://www.modularbrains.net/dodigitalmonkeysinhabitvirtualtrees.html L-system digital sound synthesis: 'Do Digital Monkeys Inhabit Virtual Trees?' Electronic music piece composed with L-systems.]
- [https://web.archive.org/web/20090201053112/http://lsysjs.qwert.ch/ LSys/JS] - Interactive L-System interpreter using the Canvas HTML element。
- [https://web.archive.org/web/20070717045807/http://www.qwerkop.de/qwerkop-projects-lsystem.php Lindenmayer System for plant visualisation (Java Applet)]。
- [http://cs.unm.edu/~joel/PaperFoldingFractal/paper.html Fractal Grower: Free Java paper folding L-System intended for elementary and middle school students.]
- [http://www.cove.org/default.aspx?id=1&sid=3&mid=2 Programmatic animations in actionscript showing various L-systems.]
- [http://www.cs.ucf.edu/~acampbel/applets/LSystems/LSystems.php Java applet showing random L-Systems while driving down Lindenmayer Boulevard]
- [http://sourceforge.net/projects/magicgarden/ Magic Garden - Artificial Plants Laboratory] - free plants generator using L-Systems
- [http://www.inkscape.org/ Inkscape] a free software vector graphics program which implements, among its plugins, an L-system generator
- [https://web.archive.org/web/20180322175452/http://garabatos.wikidot.com/ Garabatos],an interactive evolutionary image generator based in L-Systems
- [http://jsxgraph.uni-bayreuth.de/wiki/index.php/L-systems Online experiments with L-Systems using JSXGraph (JavaScript)]
参见
- 碎形}-
- 迭代函數系統
- 希爾伯特曲線
- 图灵机
- 图灵归约
- 交互式证明系统
- 隨機預言機
评论 (0)