Определите этот алгоритм: вероятностные главные-k элементы в потоке данных

Примечание читателям: Несколько комментаторов указали на некоторые проблемы в этом ответе (связанный особенно с первым предложением). Обратитесь к разделу комментариев для получения дополнительной информации.

DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz");

Это дает Вам дату, подобную [1 112] 2008-09-22T13:57:31.2311892-04:00.

Иначе:

DateTime.UtcNow.ToString("o");

, который дает Вам 2008-09-22T14:01:54.9571247Z

Для получения указанного формата, можно использовать:

DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")

Параметры форматирования DateTime

10
задан 19 July 2009 в 22:19
поделиться

1 ответ

Возможно, вы ищете алгоритм «Частый». Он использует счетчики k - 1 для нахождения всех элементов, которые превышают 1 / k от общего числа, и был опубликован в 1982 году Мисрой и Грисом. Это обобщение алгоритма «большинства» Бойера и Мура (или Фишера-Зальцберга), где k равно 2. Эти и связанные с ними алгоритмы представлены в полезной статье «Проблема Бритни Спирс».

Я даю подробное объяснение алгоритма в другом месте на StackOverflow, , которое я не буду здесь повторять. Важным моментом является то, что после одного прохода значения счетчика не точно указывают частоту элемента; они могут занижать счет с запасом, который зависит от длины потока и, наоборот, от количества счетчиков ( n / k ). Все эти алгоритмы (включая "SpaceSaving" Метвалли) требуют второго прохода, если вам нужен точный подсчет, а не оценка частоты.

2
ответ дан 4 December 2019 в 03:39
поделиться
Другие вопросы по тегам:

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