Учитывая вход и желаемый результат, выясните необходимое преобразование - PullRequest
0 голосов
/ 12 сентября 2009

Я хочу программу, которая делает то, что я сказал в заголовке.

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

Чтобы привести конкретный пример (в Python):

>>> def find_transform(start, desired):
>>>     # Insert magic here

>>> find_trasform([1,2,3], [3,2,1])
"reverse"

>>> find_trasform([1,2,3,4], [[1,2], [3,4]])
"divide 2"

Я подозреваю, что есть официальное слово для такого рода вещей, но я не знаю, что это такое.

1 Ответ

1 голос
/ 12 сентября 2009

Ну, термин называется Отображение данных . Это обширная область, которая может служить нескольким целям, включая вашу.

Инструменты для такой задачи трудно освоить, поэтому не ждите, что это будет легко. Для этого конкретного случая вам понадобятся методологии Data-Driven Mapping . Они включают комбинацию эвристики и статистики , чтобы найти соответствующие отношения.

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

РЕДАКТИРОВАТЬ: последний пример добавляет новое измерение. Так что это тоже должно быть заметно. Если вы придерживаетесь прогрессивных отношений между наборами, как это имеет место (сначала установите отношения между наборами 1 и 2, затем между наборами 2 и 3), все будет хорошо. Это может даже помочь быстрее доказать отношения, так как вам не нужно часто повторяться. Но более сложные отношения между наборами могут привести к решению гораздо более сложной проблемы. Постарайтесь сделать это простым.

...