代码之家  ›  专栏  ›  技术社区  ›  user142019

如何在记忆中储存分子?

  •  4
  • user142019  · 技术社区  · 16 年前

    我想把分子储存在记忆里。这些可以是简单的分子:

    Methane (CH4)
    C-H bond-length: 108.7 pm
    H-H angle: 109 degrees
    


    Paracetamol

    如何在内存中存储分子,包括所有键的长度和角度?


    5 回复  |  直到 16 年前
        1
  •  9
  •   Tim Robinson    16 年前

    它看起来像某种图形数据结构:

    • 一个分子有一组原子
    • 原子通过键连接:
      • 键可以是双键、单键或三键
      • 键有一个角度
    • 这是一个循环图(例如,问题中的例子有一个交替的单键和双键的环)

    通常,您将图形存储为节点数组(原子)和边数组(键)。节点和边都是指向结构的指针。

    节点(atom)将存储元素。

    边(键)将存储以下字段:

    • 键长和键角

    因为它不是有向图,所以您的数据结构会认为a和B之间的边等同于B和a之间的边。也就是说,对于给定的一对原子,您希望您的边数组包含从a到B的边,而不是从B到a的边。

        2
  •  0
  •   Jerry Coffin    16 年前

    随便说,听起来很像 非常

        3
  •  0
  •   rano    16 年前

    也许你应该看看 Molecules

        4
  •  0
  •   Derek    16 年前

    你打算对这些分子做什么计算,还是仅仅画出来?如果你打算做任何严格的计算,那么我甚至不会尝试使用Objective C。为了获得最佳性能,你应该将角度、长度和连接存储在普通数组中,并进行所有必要的计算以跟踪结果。如果涉及到大量的计算,这些使用花哨的数据结构来保存分子信息的应用程序运行得很差。

        5
  •  0
  •   rubber boots    16 年前

    你帖子中的一个分子是一个具体分子实例的类似描述符的模板(具有不同的笛卡尔坐标)。因此,对于每个可能数量的分子类型实例,您只需要一个“分子”。然后,你需要一个坐标数组,从中可以提取出一个分子的坐标。对于这个描述符,您应该创建数据结构,允许您以最佳方式访问这些值。也许是一个 矢量 of(a,b,r,type)-用于键的结构,a 矢量

    当做