Интеллектуальные чисто функциональные множества

Множественные вычисления, состоящие из союзов,пересечения и различия часто могут быть выражены по-разному. Существуют ли какие-либо теории или конкретные реализации, которые пытаются свести к минимуму количество вычислений, необходимых для достижения заданного ответа?

Например, я впервые столкнулся с практическим применением этого при попытке разложить атомы при моделировании аморфного материала на соседние оболочки, где первая оболочка является ближайшими соседями некоторого заданного атома происхождения, а вторая оболочка — это те атомы, которые являются соседями первой оболочки, не входящей ни в первую оболочку, ни в ту, что перед ней:

nth 0 = singleton i
nth 1 = neighbors i
nth n = reduce union (map neighbors (nth(n-1))) - nth(n-1) - nth(n-2)

Существует множество различных способов решения этой проблемы. Вы можете инкрементно проверить принадлежность к каждому набору при составлении результата или вычислить объединение трех соседних оболочек и использовать пересечение, чтобы удалить предыдущие две оболочки, оставляя самую внешнюю. На практике решения, требующие построения больших промежуточных множеств, работают медленнее.

Предположительно, реализация интеллектуального множества может составить выражение, которое должно было быть оценено, а затем оптимизировать его (например, уменьшить размер промежуточных множеств) перед его оценкой с целью повышения производительности. Существуют ли такие наборы реализаций?

11
задан Jon Harrop 10 June 2012 в 18:27
поделиться