计算科学家可以很好地解决哪些生物学/化学问题?

从计算的角度来看,几乎所有问题都可以解决。 我拥有的两个领域是进化生物学和神经科学。 这是通过计算手段处理的一些问题: 进化生物学:进化生物学发生在较大的时间尺度上,即使对于突变率高且产生时间短的生物,进化生物学也只能通过计算工作进行广泛测试。 以Adami和Ofria [1]的Avida为例。 您可能会立即想到,对简单且通常人为设计的模型进行了仿真,但由于定义和演化时间尺度的必要性,这些模型已脱离现实。 Avida通过创建竞争处理器周期和各种计算资源的数字生物来解决这种情况。 他们甚至通过奖励计划和有性繁殖设法发展出基本的算术。 由于基因组是执行(或在大多数情况下不执行)算术/逻辑运算的二进制字符串,因此基因组也明确地与生物功能相关(表型反映基因型)。 更传统的理论应用是进化动力学模型的创建。 可以研究特定类型的进化机制的特定要求。 如果有兴趣,我可以更详细地写。 更多的“实用”应用程序包括有指导的演进。 从化学到机械设计再到人工智能,它的应用范围更加广泛。 弗朗西斯·阿诺德(Francis Arnold)[2]在更多的化学应用,不断发展的酶及其他领域中扬名。 Boxcar2d是有趣且非学术性的应用,说明机械设计如何从引导式进化中受益。[3]…

基因编程可以产生新颖的搜索算法吗?

这是一个非常有趣的问题,因为遗传编程本身就是搜索的一种形式,如果答案是肯定的,那么也许有可能创建一个自我增强的通用编程系统。 奇点我们来了! 遗传编程是编程的程序搜索方法的子集。 它有效地搜索程序空间,即包含所有可能程序的空间,以找到任务的最佳或“最适合”程序。 当它重复一定次数或直到达到适合的目标水平时,它结束。 与遗传方法的区别在于,最适合的候选者(通常是两个)随机组合(即有些随机)以生成下一代候选程序的后代。 基因编程工作要在解决方案上工作并收敛,必须满足两个基本要求。 首先,编程语言/生成器必须生成语法正确的代码。 诸如Lisp之类的语言,或诸如Forth之类的基于堆栈的语言,往往被用作子部分,因为它们可以更容易地组合成正确或可修正的代码。 正确地重新组合诸如C之类的语法敏感语言可能会降低程序演化的“创造力”,尽管C的速度非常吸引人。 而且,由于重组代码可以很容易地在运行时环境本身中运行,因此解释型语言将简单得多。 也许及时编译也可以。 对于搜索程序应用程序而言,这显然不是问题,因为解释后的语言可以使用Lisp或Stack语言进行搜索。 第二个要求是,代码的生成和组合(称为交叉重叠)必须确保两个有效程序的元素在某种程度上随机组合,通常会产生更好的程序。 这限制了遗传编程可以解决的问题的复杂性,因为复杂算法的随机组合部分几乎始终无所适从。 因此,像自然语言驱动的网络搜索算法这样复杂的事物将不适合通用编程,除非作为子组件。 Google现在可以放松。 但是可以想象,即使涉及大量数据并且模式很复杂,直接模式匹配搜索算法还是可以的。…