У меня есть куча регрессионных тестовых данных. Каждый тест представляет собой список сообщений (ассоциативных массивов), отображающих имена полей сообщений для значений. В этих данных много повторений.Как определить минимальный набор параметров, описывающих набор данных
Например
test1 = [
{ sender => 'client', msg => '123', arg => '900', foo => 'bar', ... },
{ sender => 'server', msg => '456', arg => '800', foo => 'bar', ... },
{ sender => 'client', msg => '789', arg => '900', foo => 'bar', ... },
]
Я хотел бы представлять данные поля (в виде дерева решений минимальной глубины?) Таким образом, что каждое сообщение может быть программно регенерировать использованием минимального числа параметров. Например, в приведенном выше
- Foo всегда «Бар», так что мне не нужно упомянуть, что
- отправитель и клиент взаимосвязаны, поэтому мне нужно только упомянуть один или другой
- и сообщ каждый раз разный
Так что я хотел бы, чтобы иметь возможность восстанавливать эти сообщения с программой по линии
write_msg('client', '123')
write_msg('server', '456')
write_msg('client', '789')
, где функция write_msg будет состоять из вложенных операторов if или подфункций, используя параметры.
Основываясь на моих исходных данных, как я могу определить «самый важный» набор параметров, то есть те, которые позволят мне воссоздать мой набор данных, используя наименьшее количество аргументов?
Хм. Я рад видеть, что эта проблема действительно сложна, и я не крутился вокруг без причины. Спасибо за сбор этих ссылок. – Eric 2008-10-10 00:40:49