Слегка математический вопрос
Aug. 3rd, 2016 06:55 pmИ слегка относящийся к работе, но это не очень важно; для работы он не критичен, а так, в порядке делового бреда. Ключевых слов, чтобы попробовать погуглить возможные решения, я навскидку не придумаю, так что предлагайте ваши варианты.
Даны два наборабитовых строк фиксированной длины. Нужно найти минимальный набор позиций в этих строках, такой, что некоторая функция от конфигурации битов в этих позициях позволяет определить, к какому набору принадлежит строка.
Продемонстрирую на человеческих примерах:
Например, если один набор (корова, ворона, корона, собака), а другой (солнце, лошадь, молоко, дерево), то ответом будет [6] (в 6-й позиции в одном наборе буква А, а в другом - не А).
Или если один набор (голова, окорок), а другой (смалец, яичник), то ответом будет, например [1,2] - в одном наборе в этих позициях количество согласных чётное, а в другом - нечётное.
Ну и, естественно, в худшем случае окажется, что количество позиций в минимальном наборе равно длине строки. Это положение дел хотелось бы уметь определять как можно более эффективно.
Даны два набора
Продемонстрирую на человеческих примерах:
Например, если один набор (корова, ворона, корона, собака), а другой (солнце, лошадь, молоко, дерево), то ответом будет [6] (в 6-й позиции в одном наборе буква А, а в другом - не А).
Или если один набор (голова, окорок), а другой (смалец, яичник), то ответом будет, например [1,2] - в одном наборе в этих позициях количество согласных чётное, а в другом - нечётное.
Ну и, естественно, в худшем случае окажется, что количество позиций в минимальном наборе равно длине строки. Это положение дел хотелось бы уметь определять как можно более эффективно.
no subject
Date: 2016-08-04 07:40 am (UTC)в этих позициях позволяет определить
Вероятно, нужно заранее определиться, каков набор таких функций. Иначе это задача уже совсем другого уровня.
no subject
Date: 2016-08-04 07:54 am (UTC)no subject
Date: 2016-08-04 10:57 am (UTC)no subject
Date: 2016-08-04 06:31 pm (UTC)no subject
Date: 2016-08-04 08:48 pm (UTC)Так я правильно понял, что хочется универсальную оптимизацию поиска для произвольного набора целевых функций?
no subject
Date: 2016-08-04 08:52 pm (UTC)no subject
Date: 2016-08-04 06:23 pm (UTC)no subject
Date: 2016-08-04 06:30 pm (UTC)no subject
Date: 2016-08-04 07:23 pm (UTC)no subject
Date: 2016-08-04 07:31 pm (UTC)no subject
Date: 2016-08-04 07:41 pm (UTC)no subject
Date: 2016-08-04 07:50 pm (UTC)no subject
Date: 2016-08-04 08:21 pm (UTC)no subject
Date: 2016-08-04 08:26 pm (UTC)no subject
Date: 2016-08-04 10:11 pm (UTC)no subject
Date: 2016-08-04 10:23 pm (UTC)Нынешее состояние: https://books.google.com/books?id=ZNl3CwAAQBAJ
no subject
Date: 2016-08-05 07:24 am (UTC)Зато нашел вот это, и стало более или менее ясно.
no subject
Date: 2016-08-06 01:27 pm (UTC)no subject
Date: 2016-08-06 03:38 pm (UTC)no subject
Date: 2016-08-09 08:59 pm (UTC)- транспонировать, так что позицией будет номер строки
- применять волшебную функцию к строкам и смотреть на результат
no subject
Date: 2016-08-09 09:20 pm (UTC)Для наборов строк А и Б построить набор В из всех строк вида (a из A) XOR (б из Б). Решением будет минимальный набор позиций, такой, что в В не найдется строки с нулями во всех этих позициях. Это делается, например, с помощью итеративного применения SAT. Перед этим, конечно, можно применить очевидные эвристики.
no subject
Date: 2016-08-11 03:33 pm (UTC)А то и сверху вниз.