Как лучше подходить, чтобы найти, является ли данный набор идеальным подмножеством набора? Если данное подмножество не отсортировано? - PullRequest
1 голос
/ 24 мая 2010

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

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

Есть идеи?

С уважением,

Microkernel

Ответы [ 3 ]

3 голосов
/ 24 мая 2010

Предполагая, что выбранный вами язык не реализует класс набора с методом «содержит в наборе» уже, как в Java это делает с HashSet ...

ХорошийПодход заключается в использовании хеш-карт (или хэшей, или ассоциативных массивов)

Если ваш суперсет не слишком большой, создайте хэш-карту, отображающую каждый объект в большем наборе в истинное значение.Затем переберите каждый элемент в подмножестве.Попробуйте найти элемент в сгенерированном hashmap.если вы потерпите неудачу, ваш маленький набор НЕ будет подмножеством peoper.Если вы закончите цикл без сбоев, это так.

1 голос
/ 24 мая 2010

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

0 голосов
/ 24 мая 2010

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

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