spamsink: (lenin)
[personal profile] spamsink
И слегка относящийся к работе, но это не очень важно; для работы он не критичен, а так, в порядке делового бреда. Ключевых слов, чтобы попробовать погуглить возможные решения, я навскидку не придумаю, так что предлагайте ваши варианты.

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

Продемонстрирую на человеческих примерах:

Например, если один набор (корова, ворона, корона, собака), а другой (солнце, лошадь, молоко, дерево), то ответом будет [6] (в 6-й позиции в одном наборе буква А, а в другом - не А).

Или если один набор (голова, окорок), а другой (смалец, яичник), то ответом будет, например [1,2] - в одном наборе в этих позициях количество согласных чётное, а в другом - нечётное.

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

Date: 2016-08-04 07:40 am (UTC)
From: [identity profile] qvz.livejournal.com
> некоторая функция от конфигурации битов
в этих позициях позволяет определить

Вероятно, нужно заранее определиться, каков набор таких функций. Иначе это задача уже совсем другого уровня.

Date: 2016-08-04 10:57 am (UTC)
From: [identity profile] qvz.livejournal.com
Эээ, а разве переменные типа булево? Результат - булево, а переменные - нет.

Date: 2016-08-04 08:48 pm (UTC)
From: [identity profile] qvz.livejournal.com
Пардон, тупанул.
Так я правильно понял, что хочется универсальную оптимизацию поиска для произвольного набора целевых функций?

Date: 2016-08-04 06:23 pm (UTC)
From: [identity profile] sab123.livejournal.com
Так это ж похоже на radix tree, которое используется для маршрутизации. Там проблема аналогичная - найти минимальный набор элементов в строках, только не символов, а битов. Но требуется получить в результате конкретную строку, а не набор.

Date: 2016-08-04 07:23 pm (UTC)
From: [identity profile] sab123.livejournal.com
Можно попробовать использовать то же radix tree, но стараться его сбалансировать так, чтобы как можно ближе к корню дерева оказывалось, что строки из одного набора слева от узла, а из другого - справа. Тогда дерево можно подрезать, сократив все что ниже этого узла до двух листьев. Ну, и так далее для всех узлов - стараться подрезать дерево до как можно короткого состояния.
Edited Date: 2016-08-04 07:24 pm (UTC)

Date: 2016-08-04 07:41 pm (UTC)
From: [identity profile] sab123.livejournal.com
Можно сначала построить radix tree, а потом пытаться его сокращать, прикладывая функции. Например, для XOR нужно найти два узла, где под-деревья под ними совпадают с точностью до противоположного направления выбора в самом узле.

Date: 2016-08-04 08:21 pm (UTC)
From: [identity profile] sab123.livejournal.com
Таки нет, для булевских функций все возможные функции можно привести в disjunctive normal form. Radix tree можно перевести в вид функции представленной в ДНФ, а потом применить обычную оптимизацию на ней.

Date: 2016-08-04 10:11 pm (UTC)
From: [identity profile] kcmamu.livejournal.com
Ключевые слова: минимальный тест, тупиковый тест...

Date: 2016-08-04 10:23 pm (UTC)

Date: 2016-08-06 01:27 pm (UTC)
From: [identity profile] mtve.livejournal.com
http://www.ics.uci.edu/~eppstein/pubs/Epp-SWAT-16-slides.pdf ?

Date: 2016-08-09 08:59 pm (UTC)
From: [identity profile] pappadeux.livejournal.com
- сделать из строковых наборов матрицы

- транспонировать, так что позицией будет номер строки

- применять волшебную функцию к строкам и смотреть на результат

Date: 2016-08-11 03:33 pm (UTC)
From: [identity profile] yuri-yurkevich.livejournal.com
Вот, кстати, хорошая задача для программиста - написать форматовщик, чтобы тексты на кириллице или латинице можно было читать справа налево, как в семитских языках.

А то и сверху вниз.

Profile

spamsink: (Default)
spamsink

February 2026

S M T W T F S
12345 67
8 91011 121314
15161718 192021
22 2324 25262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 5th, 2026 07:35 pm
Powered by Dreamwidth Studios