Pull to refresh
82
0
Роман @leron

User

Send message
Символ — это, например, «CYRILLIC SMALL LETTER A», а байт — это нолики и еденицы, например '\xe0'. Для того, что б байт стал символом, необходима кодировка. И в зависимоти от кодировки, этот байт (или байты) может представлять разные символы.
if fn and type(fn)==MethodType стоило бы заменить на isinstance(fn, MethodType).

А по делу — хорошая демонстрация развития идеи и возможностей Пайтона :)
Я не нашел других реализаций поиска специально для неоднобайтовых кодировок, так что могу предположить что они сравниваются побайтово.
— sublinear search behaviour in good cases (O(n/m))
— no worse than the current algorithm in worst case (O(nm))


отсюда — effbot.org/zone/stringlib.htm
Спасибо за линк. Добавил в пост.
Если строго, то html по классификации Хомского принадлежыт к типу 2 (контекстно-свободные), в тоже время регулярки — 3 тип. То есть html нельзя описать (а значит и пропарсить) с помощью regexp.
Почему нельзя парсить html регулярками — это сюда stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 :)
And to those taking the thread seriously: this is all in jest. We
won't change the indexing base. The idea is so preposterous that the
only kind of response possible is to laugh with it.

(Коротко — «Ребята, это просто шутка»)

Второй ответ Гвидо, который понял, что некоторые восприняли идею всерьёз:)
«про новомодные алгоритмы, такие как нейронные сети»

Вы издеваетесь? Эти алгоритмы успели уже много раз появится, стать взрывобразно популярными, забыться и заново возродится.
У раздела «Дифференциальное выделение границ» замечательное содержание :)

Если вспомнили Собеля, грех не вспомнить оператор Лапласа. Если уж расписали обе матрицы для оператора Собеля, стоить добавить формулу для вычисления направления границы — «a = arctg(A*Gx / A*Gy)».

Из как уже заметили, метод Канни(Canny) — де-факто основной метод распознавания границ на изображении на сегодня, но о нем ни слова.
Теперь понятно :) Фраза

>не очень известного, но крайне интересного иерархического метода

никак не имела ввиду редкость иерархических методов вообще, а только редкость конкретного метода.

п.с. у Вас отличные статьи о распознавание образов :)
>он используется очень часто
Странно. До публикации статьи на гуглом находилось всего несколько научных статей-книг с упоминанием алгоритма.

> дерево кластеров
> нет необходимости заранее фиксировать число кластеров
Это всем известные преимущества иерархических методов. Не видел смысла о них упоминать еще раз.

> Только вот вы почему-то это дерево в статье не привели
Я бы с радостью, только здесь на порядок больше нужно было поработать над представлением результатов (дерево надо красиво нарисовать, точки на рисунках удобно пронумеровать) — а я пока так себе владею matplotlib.
Идея в построение отношения, которое обладает свойством эквивалентности. В книге есть определения теоремы, которая утверждает что отношение эквивалентности разбивает множество на попарно непересекающиеся классы эквивалентных элементов.

Я бы с удовольствием интерпретировал это определение, но мои познания с теории множеств не позволяют :)
Да, нужно посчитать n*n/2 расстояний. Кроме того, операция свертки может быть довольно дорогой для не дискретных данных.
Я не уверен, что правильно Вас понял, но при чем здесь матстатистика?

> процесс какого вида мог к нему привести
Похоже на предметную область теории конечных автоматов.
Да, это будеть True, но не потому что 11 > 0, а потому что True(1) > 0.

> питон под рукой
http://codepad.org
Спасибо, поправил.
Смотрим байт-код:

>>> def f1():
...     a, b = 0, 1
...     b, a = a, b
...
>>> def f2():
...     a, b = 0, 1
...     c = a
...     a = b
...     b = c
...

>>> dis.dis(f1)
  2           0 LOAD_CONST               3 ((0, 1))
              3 UNPACK_SEQUENCE          2
              6 STORE_FAST               0 (a)
              9 STORE_FAST               1 (b)

  3          12 LOAD_FAST                0 (a)
             15 LOAD_FAST                1 (b)
             18 ROT_TWO
             19 STORE_FAST               1 (b)
             22 STORE_FAST               0 (a)
             25 LOAD_CONST               0 (None)
             28 RETURN_VALUE
>>> dis.dis(f2)
  2           0 LOAD_CONST               3 ((0, 1))
              3 UNPACK_SEQUENCE          2
              6 STORE_FAST               0 (a)
              9 STORE_FAST               1 (b)

  3          12 LOAD_FAST                0 (a)
             15 STORE_FAST               2 ©

  4          18 LOAD_FAST                1 (b)
             21 STORE_FAST               0 (a)

  5          24 LOAD_FAST                2 ©
             27 STORE_FAST               1 (b)
             30 LOAD_CONST               0 (None)
             33 RETURN_VALUE



Ищем отличия и смотрим, что такое ROT_TWO:

Swaps the two top-most stack items. (дока)

И так, на самом деле вариант с упаковыванием-распаковыванием списков потребляет меньше памяти. Компилятор умный, он оптимизирует.
k = 0
for i in permutations(range(10)):
  if k >= 5:
    break
  print i
  k += 1

с itertools превратится в
list(islice(permutations(range(10)), 5))

Information

Rating
Does not participate
Location
Львов, Львовская обл., Украина
Registered
Activity