Есть ли конкретный алгоритм для такого рода проблем? - PullRequest
2 голосов
/ 14 декабря 2011

Я столкнулся с парой подобных проблем, когда в наборе есть пара предметов e i = {w i , h i } для i=0..n, вы должны найти самую длинную серию, такую ​​что w m > w m + 1 и h м > ч м + 1 для каждого последующего значения m.Звучит знакомо?Кто-нибудь может указать конкретный алгоритм, который может иметь дело с аналогичными проблемами?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Один из способов сделать это - построить ориентированный ациклический граф, в котором есть узел для каждого ei и ребро от ei до ej, если ej> ei (в том смысле, в котором вы говорите выше). Затем найдите самый длинный путь в этом DAG .

0 голосов
/ 14 декабря 2011

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

При реализации этого вам нужно написать свой собственный метод Comparatorэто говорит e_i < e_j тогда и только тогда, когда w_i < w_j и h_i < h_j.Тот факт, что у вас есть частичный заказ вместо общего, не меняет алгоритм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...