2015-03-26 5 views
-2

У меня есть история записей для колоды карт (52) для комбинаций, теперь я хочу найти, какие наиболее встречающиеся комбинации из записей истории.Наиболее часто встречающиеся комбинации из пачки карточек колоды

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

Пусть у меня есть история в таблице:

AKJ

JKQ

AKK

AJJ

A123

AKJ

AKQ

A234

AKQ

AKQ

AKQ

похож на все карты

Теперь я хочу, чтобы получить наиболее произошло сочетание для - в выше AKQ -4 мелодии

Аналогично для всех карт

Я попытался с Еогеасп карты итерация по истории и получить комбинации в список и получить подсчет, но это неэффективно

Я хочу знать, что это лучший образец, соответствующий одному, мне нужно использовать наборы и как?

+0

Вы говорите только о комбинациях с парой? На данный момент ваш вопрос очень абстрактный: мы не знаем, как выглядит эта история и т. Д. Это затрудняет ответ. –

+0

Отредактированный мой вопрос для ясности –

+1

Так всегда есть три карты в каждой комбинации, так что вы просто ищете комбинации из двух карт плюс указанный? Является ли заказ важным? У вас просто есть строки, или у вас есть перечисления и т. Д. Для карточек? (Если бы вы могли дать пример кода, это упростило бы предоставление кода в ответе ...) –

ответ

0

Из чего я понимаю, вы пытаетесь получить счет комбинации, которая наиболее часто встречается для определенной карты/номера. И комбинация будет соответствовать числу, если число присутствует в любом месте комбинации.

Я думаю, что для эффективного ответа на этот вопрос вопроса для растущей истории вы можете использовать график для моделирования истории. График будет двудольным (узлы 2 типа).Одним типом узлов было бы каждое единственное число (13 из них), а другие типы узлов были бы уникальными комбинациями, присутствующими в истории.

Каждый комбинированный узел будет подключен ко всем номерам, присутствующим в комбинации. Каждый узел комбинации также имеет счетчик своей частоты.

В вашем примере узел A будет подключен к AKJ (2 раза), AKK (1 раз), AJJ (1 раз), A123 (1 раз), A234 (1 раз) и AKQ (4 раза).

Всякий раз, когда происходит комбинация, вы можете проверить, присутствует ли она на графике (используя хеш-таблицу). Если присутствует, увеличьте его количество. Else, добавьте для него новый узел комбинации и подключите его к номерам, присутствующим в нем.

Используя этот график, вы можете запросить комбинации, соответствующие любому числу, путем итерации через своих соседей и поиска соседа (комбинации) с самой высокой частотой. Таким образом, для A, из списка его соседей, наиболее частым является AKQ.

0

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

  • перебирать возможные карты и найти все в истории или
  • итерации по истории и рассчитывать максимум для каждой карты.

Чтобы выиграть здесь, вы можете посмотреть фактический максимальный счет и посмотреть, сколько карт осталось в истории. Если вы просто хотите узнать, какую карточку вы закончили. Если вы хотите узнать счет, вы должны перебирать все карты.

Смежные вопросы