Trie (дерево префикса) в Python

Вы можете использовать Invoke-RDUserLogoff

Пример выхода из системы пользователей Active Directory определенной организационной единицы:

$users = Get-ADUser -filter * -SearchBase "ou=YOUR_OU_NAME,dc=contoso,dc=com"

Get-RDUserSession | where { $users.sAMAccountName -contains 

Вы можете использовать Invoke-RDUserLogoff

Пример выхода из системы пользователей Active Directory определенной организационной единицы:

[110]

В конце канала, если вы попытаетесь использовать только foreach (%), он выйдет из системы только для одного пользователя. Но используя эту комбинацию foreach и pipe:

| % {$ _ | команда}

будет работать как положено.

Пс. Беги как адм.

.UserName } | % {

Вы можете использовать Invoke-RDUserLogoff

Пример выхода из системы пользователей Active Directory определенной организационной единицы:

[110]

В конце канала, если вы попытаетесь использовать только foreach (%), он выйдет из системы только для одного пользователя. Но используя эту комбинацию foreach и pipe:

| % {$ _ | команда}

будет работать как положено.

Пс. Беги как адм.

| Invoke-RDUserLogoff -Force }

В конце канала, если вы попытаетесь использовать только foreach (%), он выйдет из системы только для одного пользователя. Но используя эту комбинацию foreach и pipe:

| % {$ _ | команда}

будет работать как положено.

Пс. Беги как адм.

18
задан jacob 7 June 2009 в 01:14
поделиться

5 ответов

На первый взгляд кажется, что вы реализовали Patricia Trie . В некоторой литературе этот подход также называется сжатием траектории. Должны быть копии этого документа, которые не находятся за платным доступом ACM, который будет включать алгоритм вставки.

Существует также другой метод сжатия, на который вы, возможно, захотите обратить внимание: сжатие уровня. Идея сжатия пути состоит в том, чтобы заменить строки одиночных дочерних узлов одним суперузлом, у которого есть счетчик пропусков. Идея сжатия уровней состоит в том, чтобы заменить полные или почти полные поддеревья суперузлом со счетчиком «градусов», который показывает, сколько цифр ключа декодирует узел. Есть также третий подход, называемый сжатием ширины, но, боюсь, моя память не подводит меня, и я не могу ' не найду его описания быстрым поиском в гугле.

Сжатие уровней может значительно сократить средний путь, но алгоритмы вставки и удаления становятся довольно сложными, поскольку им нужно управлять узлами дерева так же, как и динамическими массивами. Для правильных наборов данных деревья со сжатием уровней могут быть быстрыми . Насколько я помню, это второй по скорости подход к хранению таблиц IP-маршрутизации, самый быстрый - это своего рода хеш-дерево.

19
ответ дан 30 November 2019 в 08:27
поделиться

Я не вижу ничего плохого в вашем подходе. Если вы ищете решение для всплесков, возможно, действие, предпринятое в случае 4, действительно выполнимо для первых трех случаев, IE найдет общий префикс для k и k ' и перестроит узел с учетом этого. Если случится так, что ключи были префиксами друг друга, результирующее дерево все равно будет правильным, только реализация проделала немного больше работы, чем на самом деле. но опять же, без какого-либо кода для просмотра трудно сказать, работает ли это в вашем случае.

2
ответ дан 30 November 2019 в 08:27
поделиться

Somewhat of a tangent, but if you are super worried about the number of nodes in your Trie, you may look at joining your word suffixes too. I'd take a look at the DAWG (Directed Acyclic Word Graph) idea: http://en.wikipedia.org/wiki/Directed_acyclic_word_graph

The downside of these is that they aren't very dynamic and creating them can be difficult. But, if your dictionary is static, they can be super compact.

2
ответ дан 30 November 2019 в 08:27
поделиться

У меня вопрос относительно вашей реализации. Каков уровень детализации, на котором вы решили разбить свои строки, чтобы создать префиксное дерево. Вы можете разделить стек на s, t, a, c, k или st, ta, ac, ck и многие другие его грамм. Большинство реализаций префиксного дерева учитывают алфавит для языка, на основе которого вы делаете разбиение.

Если бы вы строили реализацию дерева префиксов для python, тогда вашими алфавитами были бы такие, как def,:, if, else ... и т. Д.

Выбор правильного алфавита имеет огромное значение для построения эффективных деревьев префиксов. Что касается ваших ответов, вы можете поискать пакеты PERL на CPAN, которые выполняют самые длинные общие вычисления подстроки с использованием trie. Возможно, вам повезет, поскольку большая часть их реализации довольно надежна.

2
ответ дан 30 November 2019 в 08:27
поделиться

Посмотрите: Массивы Judy и интерфейс python на http://www.dalkescientific.com/Python/PyJudy.html

1
ответ дан 30 November 2019 в 08:27
поделиться
Другие вопросы по тегам:

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