Математика в этом алгоритме поиска подстроки анаграммы

Бит представляет собой диапазон, который представляет ширину одного бара гистограммы вдоль оси X. Вы также можете назвать этот интервал. (Википедия более формально определяет их как «непересекающиеся категории».)

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

В этом примере:

 np.histogram([1, 2, 1], bins=[0, 1, 2, 3])

Имеется 3 ячейки, для значений от 0 до 1 (исключая 1), от 1 до 2 (исключая 2) и от 2 до 3 (включая 3), соответственно. Путь Numpy определяет эти ячейки, если, указав в этом примере список разделителей ([0, 1, 2, 3]), хотя он также возвращает ячейки в результатах, поскольку он может автоматически выбирать их из ввода, если они не указаны. Если bins=5, например, он будет использовать 5 бит ширины с равной шириной между минимальным входным значением и максимальным входным значением.

Входные значения: 1, 2 и 1. Поэтому бит "1 до 2 "содержит два вхождения (два значения 1), а бит" 2 - 3 "содержит одно вхождение (2). Эти результаты находятся в первом элементе в возвращаемом кортеже: array([0, 2, 1]).

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

  • строка высоты 0 для диапазона / bin [0,1] на оси X,
  • - полоса высоты 2 для диапазон / bin [1,2],
  • полоса высоты 1 для диапазона / bin [2,3].

Вы можете построить это непосредственно с Matplotlib (функция hist также возвращает бины и значения):

>>> import matplotlib.pyplot as plt
>>> plt.hist([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]), <a list of 3 Patch objects>)
>>> plt.show()

enter image description here [/g0]

0
задан 81ackCat 16 January 2019 в 01:23
поделиться

1 ответ

Логика следующая: у вас есть n слова, которые являются анаграммами друг друга. Сколько пар анаграмм вы можете выбрать оттуда? Это простой комбинаторный вопрос с известным ответом: биноминальный коэффициент из (n,2), который равен n*(n-1)/2.

Логика заключается в том, что если вы посчитаете все анаграммы, первую анаграмму вы можете выбрать n способами, вторую - n-1 способами, но каждая анаграмма будет рассматриваться дважды: один раз как ab=ba и другой раз как [ 116]

0
ответ дан SergGr 16 January 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: