Сопоставление с образцом - PullRequest
       1

Сопоставление с образцом

0 голосов
/ 29 октября 2010

Я скоро начну работу над новым проектом на работе.По сути, здесь есть много химических соединений, каждое из которых имеет свой префикс / идентификатор.Например, пара символов, за которыми следуют несколько целых и тому подобное, хотя все они различаются.

Мне было интересно, существует ли алгоритм для эффективного сопоставления этих элементов, в отличие от массивного, если еще.

Я думаю, что хеш-карта с ключом -> значением, где ключом является некоторая маска, может быть хорошей, но я надеялся, что кто-то может предложить что-то более сложное, что я мог бы использовать.

Поскольку не только для химических соединений, количество различных значений может быть огромным.

Спасибо

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

рассмотрим следующие факты:

1) Две молекулы могут иметь один и тот же структурный идентификатор, вызванный, например, стереометрией или, сравнивая две сложные молекулы (особенно со многими бензольными кольцами)

2) Рассмотримhttp://en.wikipedia.org/wiki/International_Chemical_Identifier. Это определяет однозначную версию структуры молекулы, и вы можете извлечь структурную формулу из нее.Например:

1/C2H6O/c1-2-3/h3H,2H2,1H3

представляет

CH3CH2OH (ethanol)  

3) Вы можете проверить язык запросов MQL Molecular

4) Реализация его самостоятельно может занять много временивремя.Есть некоторые контекстно-свободные грамматики, но они очень сложные, попробуйте найти бесплатный Molecule Query

0 голосов
/ 29 октября 2010

Если вы хотите сделать это профессионально, создайте файл грамматики и сгенерируйте парсер, используя ANTLR .

0 голосов
/ 29 октября 2010

Преобразуйте вашу формулу в строку, а затем используйте сопоставление с регулярным выражением, это облегчит вашу жизнь и вы выучите регулярные выражения, что весьма удобно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...