Pagerank висячий узел: Внутренний PageRank от А до Я – Блог Netpeak Software

закрывать или нет? — SEO словарь веб-студии Муравейник

Автор статьи
Андрей Буйлов

Подробнее об авторе

В данной статье разберем, что делать с висячими узлами на сайте. Подписчик спрашивает: «Интересно узнать про висячие узлы. Так ли необходимо закрывать их или не так много веса по ним уходит?».


Что такое висячие узлы?

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

На данный момент висячии узлы встречается не так часто на реальных сайтах — просто потому, что структура стандартного построения сайта поменялась.

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

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

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

И обычно ответ — нет. И если так, то просто закрываете ее от индексации и дело с концом.


Влияют ли они на вес

Когда мы считаем условный классический PageRank, а именно сколько страниц вашего сайта накапливает на себе веса, который может передать дальше. Он ей помогает ранжироваться, и она передает его дальше. И что происходит в этот момент? Когда вы составили перелинковку страниц, то есть они у вас ссылаются друг на друга, то если говорить про классический PageRank, который имеет несколько проходов, происходит такой момент: страница А ссылается на В и передает ему вес с некоторым дисконтом. Грубо говоря: на А был вес ,она передала В 0,85, то есть чуть меньше. Когда страница В ссылается на С, то еще чуть меньше, но плюс свой вес. То есть таким образом с некоторым дисконтом оно начинает разгонять друг друга, и если много раз так происходит, то дисконтирование каждый такой круг передачи будет все меньше и меньше веса передавать. Поэтому, когда рассчитывается PageRank в разных анализаторах, то кто-то делает один проход (один такой круг), кто-то 2-3, но никто не делает 100, потому что смысла это не имеет, каждый раз будет затухание.

Что происходит, когда в этой красивой системе ссылок страниц друг на друга появляются висячие узлы? То есть, когда цикл прерывается, и страница С перестает ссылаться на А? Тогда страница С набирает на себя вес, но никому его не передает, и в этом случае цикличность перестает работать и не добавляет свой вклад в вес других страниц, на которые могла бы ссылаться. Причем, если брать вариант из 3 страниц, то здесь все понятно: все получили свой вес. Но когда сайт большой и много страниц, которые не передали другим свой вес, то в целом общий вес, который сосредоточен на сайте — немножко меньше. Не в 2-3 раза, а на 10%, например. 

Формально это немного мешает продвижению: страницы на себя вес забрали, а другим не отдали. То есть, условная страница отдала 1/20 веса, а могла бы 1\19, если бы «жадины» среди них не было. А учитывая, что висячие узлы обычно ненужные для продвижения страницы, то вообще вес утек на них просто в никуда.

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



No birds: Развитие PageRank

С того момента, когда PageRank был впервые представлен в 1998 году, было потрачено немало усилий, чтобы улучшить его качество и скорость вычисления. В этой обзорной и достаточно популярной статье я опишу основные направления исследований вокруг PageRank и варианты алгоритма.

Я разрабатываю систему оценки важности web-страниц на основе входящих и исходящих ссылок в компании Нигма, поэтому смотрю на PageRank с математической стороны, со стороны разработчика а не seo.

Я не буду пересказывать здесь многократно описанные основы PageRank. Предполагается, что читатель знает, что это вообще такое. Если же нет, то для начала могу порекомендовать статью Растолкованный PageRank.

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

PageRank с математической стороны

PageRank основан на математической модели случайного блуждания «пользователя» в сети интернет. В некоторый момент он находится на одной странице, затем случайным образом выбирает одну из ссылок и переходит по ней на другую. «Пользователь» произвольно выбирает ссылки, не отдавая предпочтение каким-либо из них.

PageRank страницы – это вероятность того, что блуждающий «пользователь» находится на данной странице.

Сделаем небольшой набросок того, как рассчитать эту вероятность.

Пронумеруем web-страницы целыми числами от 1 до N.

Сформируем матрицу переходов P, содержащую вероятность перехода «пользователя» с одной страницы на другую. Пусть deg(i) – количество исходящих ссылок на странице i. В таком случае, вероятность перехода со страницы i на страницу j равна:

P[i, j] = 1 / deg(i), если i ссылается на j
P[i, j] = 0, если i не ссылается на j

Пусть p(k) – это вектор, содержащий для каждой страницы вероятность того, что в момент k на ней находится «пользователь». Этот вектор – распределение вероятностей местоположения «пользователя».

Предположим, что «пользователь» может начать своё бесцельное блуждание с любой страницы. То есть, начальное распределение вероятностей равномерно.

Зная распределение вероятностей в момент k, мы можем узнать распределение вероятностей в момент k+1 по следующей формуле:

В основе этой формулы не более чем правила сложения и умножения вероятностей.

Математически мы пришли к цепи Маркова с матрицей переходов P, где каждая web-страница представляет собой одно из состояний цепи.

Но нам нужно знать вероятность нахождения «пользователя» на странице независимо от того, сколько шагов k он сделал от точки начала блуждания.

Мы берём начальное распределение вероятностей p(0). Считаем по представленной выше формуле распределение p(1). Затем по той же формуле считаем p(2), затем p(3) и т.д. до тех пор, пока некие p(k-1) и p(k) не будут отличаться лишь незначительно (полное равенство будет достигнуто при k стремящемся к бесконечности).

Таким образом, последовательность p(1), p(2), p(3) … сойдётся к некому вектору p = p(k). Интересно, что вектор p на самом деле не зависит от начального распределения (т.е. от того, с какой страницы начал своё блуждание воображаемый «пользователь»).

Вектор p таков, что в любой момент (начиная с некоторого момента k), вероятность того, что «пользователь» находится на странице i, равна p[i]. Это и есть искомый PageRank.

Этот алгоритм называется методом степеней (power method). Он сойдётся только в том случае, если выполняются два условия: граф страниц должен быть сильно связным и апериодическим. Как достигается выполнение первого условия, будет рассмотрено далее. Второе же без дополнительных усилий справедливо для структуры web.

Примечание

При выполнении условий сильной связности и апериодичности, согласно эргодической теореме, цепь Маркова с матрицей перехода P имеет единственное стационарное распределение p:

PageRank и является стационарным распределением цепи Маркова.

Также это выражение представляет собой собственную систему, а вектор p — собственный вектор матрицы A. Поэтому и применяется метод степеней — численный метод для поиска собственных векторов.

Висячие узлы (dangling nodes)

Висячие узлы – это страницы, которые не имеют исходящих ссылок. Страница может не иметь исходящих ссылок просто потому, что у неё их нет, либо потому, что она не была прокраулена (crawled) – т.е. страница попала в базу, т.к. на неё ссылаются другие прокрауленные страницы, но сама прокраулена не была, и о её исходящих ссылках ничего не известно.

Для вычисления PageRank в графе страниц не должно быть висячих узлов. Сумма каждого ряда матрицы переходов должна быть равна единице (row-stochastic), для висячих же узлов она окажется равной 0 – входные данные алгоритма будут некорректными.

По статистике, даже если поисковая система имеет достаточно большой индекс, 60% страниц оказывается висячими. Поэтому то, как с ними поступать, оказывает большое влияние на ранжирование.

Метод удаления

Изначальный подход, предложенный Пэйджем, заключается в том, чтобы удалить висячие узлы перед вычислением PageRank. В качестве обоснования предлагается то, что висячие узлы не оказывают влияния на другие страницы. Но это не совсем так – удаляя их, мы уменьшаем количество исходящих ссылок страниц, которые на них ссылаются. Тем самым мы увеличиваем значение PageRank, которое эти страницы передают через свои ссылки.

Кроме того, удаление висячих узлов, может создать новые висячие узлы. Таким образом, требуется проделать несколько итераций удаления (обычно 5 или что-то около того).

В качестве развития этого подхода, было предложено после вычисления PageRank возвращать удалённые узлы назад в граф и проделывать ещё столько же итераций алгоритма PageRank, сколько было проделано итераций удаления. Это позволяет получить значение PageRank и для висячих узлов.

Считать связанными со всеми другими страницами

Наиболее популярный трюк заключается в том, чтобы считать висячие узлы связанными со всеми другими страницами. В модели случайного блуждания данный метод находит подходящее объяснение: попав на страницу без исходящих ссылок, «пользователь» перескакивает на любую другую страницу сети случайным образом.

Можно считать вероятность попадания «пользователя» на страницу из висячего узла в результате такого перескока распределённой равномерно среди всех страниц сети. Но можно и не считать её таковой. Например, можно исключить попадание из висячего узла на другой висячий узел. Или распределить вероятность между страницами по аналогии с аристократическим вектором телепортации, о котором будет рассказано ниже в главе Телепортация.

Матрица переходов модифицируется следующим образом:

d[i] = 1, если i – висячий узел, и 0 в противном случае
v[j] – вероятность попадания «пользователя» на страницу j из висячего узла

Шаг назад (step back)

Проблему висячих узлов можно решить, добавив каждому такому узлу обратные ссылки на страницы, которые на него ссылаются. В модели блуждания это соответствует нажатию кнопки назад в браузере «пользователем», попавшим на страницу без исходящих ссылок. Этот метод критикуют за то, что он поощряет страницы с большим количеством ссылок на висячие узлы. Однако в некоторых моих экспериментах такой подход давал лучшее ранжирование.

Петля (self-link)

Упомяну кратко ещё один способ. Каждому висячему узлу можно добавить ссылку на самого себя – это приведёт в порядок матрицу переходов. Но после вычисления PageRank, результат придётся определённым образом скорректировать. Подробности описаны в G. Jeh and J.Widom “Scaling Personalized Web Search.”

Телепортация

Решение проблемы висячих узлов ещё не даёт сильную связность графа. Поэтому вводится телепортация.

В модели случайного блуждания это выглядит так: «пользователь», находясь на некоторой странице, с вероятностью c переходит по одной из её ссылок и с вероятностью (1 – c) * v[j] перескакивает (телепортируется) на страницу j. Стохастический вектор v описывает вероятность телепортации на ту или иную страницу и называется вектором телепортации.

c как правило выбирается в диапазоне 0.85 – 0.9. Большие значения дают более точные результаты, но более медленную сходимость. Меньшие значения – быструю сходимость, но менее точные результаты.

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

Существует два способа выбора вектора телепортации: демократический и аристократический. Демократический вектор содержит одинаковые значения вероятности для всех страниц. Это стандартный вариант. Аристократический содержит низкую вероятность для обычных страниц и более высокую для избранных достоверно качественных неспамерских страниц. Последний способ явно поощряет избранные страницы в ущерб остальным, зато более устойчив к поисковому спаму.

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

Значение v[j] не должно быть равно 0. Иначе может оказаться, что j недосягаема из некой другой страницы, что означает нарушение сильной связности.

Телепортация модифицирует матрицу переходов следующим образом:

v – вектор телепортации

Мы ещё вернёмся к вектору телепортации, когда будем обсуждать персонализацию PageRank.

Ускорение метода степеней

Многие исследователи пытались ускорить сходимость метода степеней. Посмотрим на самые удачные способы.

Для удобства повторю формулу, которую мы используем на каждой итерации. Назовём её формулой А:

Метод Гаусса-Зейделя (Gauss-Seidel method)

На каждой итерации в методе степеней мы используем значения элементов вектора p(k) чтобы рассчитать вектор p(k+1). Отличие метода Гаусса-Зейделя в том, что мы сразу используем значения вычисленных элементов вектора p(k+1) для вычисления его остальных элементов.

В методе Гаусса-Зейделя мы последовательно элемент за элементом вычисляем вектор p(k+1). При это там где, согласно формуле А, нам нужно использовать значение p(k)[i] мы используем p(k+1)[i], если этот элемент вектора уже был вычислен.

Согласно экспериментам этот метод способен сократить необходимое количество итераций на 40%. Его недостаток в том, что его достаточно сложно вычислять параллельно.

Методы экстраполяции (Extrapolation methods)

В этой группе методов мы проделываем некоторое количество d обычных итераций метода степеней. Затем на основе результатов этих итераций строим аппроксимацию решения и используем её вместо p(k) для следующей итерации. Через следующие d итераций повторяем трюк. И так далее пока алгоритм не сойдётся.

Исследователям удавалось достичь сокращения необходимого количества итераций на 30%.

Адаптивный метод (Adaptive method)

Этот метод основан на наблюдении, что значительная часть элементов вектора p сходится гораздо быстрее остальных и затем почти не меняется. Ускорение в этом методе достигается за счёт того, что мы не пересчитываем значения таких элементов.

Если в какой-то момент k для некоторого элемента i обнаруживается что p(k+1)[i] — p(k)[i] меньше определённого порога, мы считаем, что значение PageRank для страницы i найдено и более не пересчитываем i-тый элемент вектора p.

Исследователям удавалось достичь сокращения времени работы метода степеней на 20% при помощи этого трюка.

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

Метод блочной структуры (Block Structure Method)

Web имеет блочную структуру. Это открытие столь интересно, что я намерен посвятить ему отдельный пост. Там же и обсудим этот метод.

UPD: пост о блочной структуре web.

Численные методы

Вычисляя значение PageRank, мы ищем такой вектор p, что

Это выражение является так называемой собственной системой, а p – собственный вектор матрицы A. Задача поиска собственного вектора может быть представлена системой линейных уравнений. В нашем случае это будет огромная, но всё же обычная система, которая может быть решена при помощи численных методов линейной алгебры.

Тем не менее, вычисление PageRank численными методами ещё находится в экспериментальной области. Каковы будут характеристики и свойства этих методов на реальных графах web пока не понятно.

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

Параллелизация

Вычисление PageRank параллельно на нескольких машинах позволяет существенно ускорить работу.

По сути методы параллелизации можно разделит на два типа.

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

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

UPD: пост о блочной структуре web.

Оптимизация ввода-вывода

Это довольно интересная тема, которую я приберегу для одного из следующих постов. Я представлю три алгоритма, которые будут интересны не только с точки зрения вычисления PageRank, но и вообще с точки зрения обработки больших объёмов информации.

Эволюция графа

Довольно естественной кажется идея не пересчитывать PageRank для всех страниц целиком, а найти способ обновлять его по мере эволюции графа страниц (по мере эволюции web).

В «Incremental Page Rank Computation on Evolving Graphs» Prasanna Desikan и др. предлагают следующий способ.

Сперва выделить часть графа, состоящую из страниц, до которых не существует путей от новых страниц, исчезнувших страниц, либо страниц, ссылки которых были изменены. Удалить эту часть графа, оставив только граничные узлы (т.к. они влияют на PageRank оставшихся страниц). Посчитать PageRank для оставшегося графа. Затем отмасштабировать значения PageRank с учётом общего количества страниц – т.к. количество страниц влияет на часть PageRank, получаемую за счёт телепортации.

Замечу, что полученный в результате PageRank не является точным, а всё же некой аппроксимацией.

По различным данным от 25% до 40% ссылок между web-страницами меняются в интернет в течение недели. Такая скорость изменения, на мой взгляд, оправдывает полный пересчёт PageRank всех страниц.

Персонализация

Представление о важности той или ной страницы во многом субъективно. То, что покажется одному отбросом, другой сочтёт изумрудом. Пусть есть очень качественная страница об игре керлинг, но я совершенно не хочу, чтобы она вылезала лично мне в топ. Чтобы учитывать в ранжировании интересы конкретного человека был придуман персонализированный PageRank.

Выбирается какое-то количество категорий, по которым можно классифицировать тематику тех или иных страниц (или сайтов). Например: культура, спорт, политика и т.п.

Пусть T[j] – множество страниц, принадлежащих к категории j (или расположенных на сайте, принадлежащем к данной категории).

Для каждой категории формируется особый вектор телепортации v (см. главу Телепортация).

v[i] очень мало, если страница i не принадлежит T[j], и значительно больше если принадлежит.

Для каждого тематического вектора телепортации вычисляется тематический PageRank pj. Вычислить сто тематических PageRank для ста категорий вполне реально.

Допустим, у нас есть вектор k, сумма элементов которого равна единице. Значение k[j] отражает степень заинтересованности пользователя (реального, а не того из модели блуждания) в категории j.

Степень заинтересованности пользователя может быть указана явно, или она может быть сохранена в его профиле. Или она может быть выведена исходя из того, какие слова входят в запрос. Например, если запрос содержит слово fairtrade то можно вывести, что пользователь заинтересован на 0.4 в теме общество, на 0.4 в теме экономика и на 0.2 в теме политика.

Во время ранжирования результатов запроса пользователя для страниц используется следующее итоговое значение PageRank:

k[0] * p0 + k[1] * p1 + … + k[n] * pn , где n – количество категорий

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

Темы, которые будут рассмотрены в следующих постах


Оптимизация ввода-вывода

Это довольно интересная тема, которую я приберегу для одного из следующих постов. Я представлю три алгоритма, которые будут интересны не только с точки зрения вычисления PageRank, но и вообще с точки зрения обработки больших объёмов информации.

Siterank

UPD: Эта тема освещена в посте о блочной структуре web.

Обработка висячих узлов — PageRank | Арпан Сардар

Это продолжение моей предыдущей статьи. Я бы порекомендовал своим читателям сначала прочитать эту статью. Здесь я расскажу о висячих узлах и о том, как их можно обработать в алгоритме PageRank.

В области сетевого анализа висячих узлов — это узлы, не имеющие внешних ребер . На приведенном ниже рисунке узел « B » является висячим узлом, поскольку у него нет исходящих ссылок. Мы все знаем, что большинство веб-страниц ссылаются на другие страницы и на них ссылаются другие страницы, но есть также много страниц без каких-либо исходящих ссылок 9.0005 Рисунок: Простая направленная сеть

в сети WWW. С каждой итерацией обновления значений PageRank эти пресловутые узлы продолжают поглощать PageRank других узлов все больше и больше и в конечном итоге приводят к тому, что узлы получают значение PageRank 0 или 1 во время схождения . Объяснение состоит в том, что случайный серфер в Интернете, имея достаточное количество времени , всегда в конечном итоге достигнет висячего узла и остановить просмотр через веб-страниц через гиперссылки. Рассмотрим это явление на простом примере. Сначала создадим направленную сеть с висячим узлом, а затем визуализируем ее через график.

Код для создания и визуализации направленной сети

Сеть показана ниже. Он состоит из одного оборванного узла « C ».

Рисунок: Направленная сеть с висячим узлом «C»0003 введите в код, который я обсуждал в предыдущей статье.

Результат нашей собственной реализации PageRank

Мы видим, что узлы получили PageRank ровно 0 или 1 . Это аномалия , о которой я упоминал ранее. Здесь узел «C» — это , поглощающий значения PageRank других узлов в сети, поскольку мы не обрабатывали ситуацию с приемниками (страницы без исходящих ссылок) в нашем коде. Давайте далее проанализируем, как значения узлов обновляются с каждой итерацией, пока они не сойдутся.

Значения PageRank узлов для каждой итерации

Порядок убывания узлов с точки зрения их PageRank равен C, A, B, D, E , который получен из нашего кода. Давайте посмотрим, как должен выглядеть правильный порядок , применив встроенную функцию PageRank networkx .

Применение встроенной в networkx функции PageRankВывод встроенной функции

Итак, наш код не дает правильного результата для сети с оборванными узлами. Теперь давайте рассмотрим раковины с концепцией 9.0003 коэффициент демпфирования. Коэффициент демпфирования d обозначает вероятность того, что воображаемый пользователь продолжит просматривать веб-страницы, щелкнув случайную гиперссылку из любого узла. Значение d равно , обычно устанавливается равным 0,85 и . Я буду учитывать то же самое в своем коде. Выделенная ниже часть — единственная модификация, которой не хватало в коде, рассмотренном в предыдущей статье. Здесь на каждой итерации все узлы сохраняют 85% их обновленных PageRank и сумма остальных 15% значений PageRank всех узлов поровну делится между ними. В каждой итерации общее значение PR для n узлов всегда равно 1 . Таким образом, присвоение 15% всем узлам означает, что каждый узел получает общее значение (0,15 / n) , которое добавляется к 85% из их значений PR , которые сохранил каждый узел. Таким образом, , используя концепцию коэффициента демпфирования, мы можем предотвратить сходимость узлов со значением 0 или 1.

Модифицированная функция (полный код см. по ссылке GitHub ниже)

Теперь наш модифицированный код дает следующий вывод. Обратите внимание, что это то же самое, что и вывод встроенной в networkx функции PageRank. Итак, делаем вывод, что измененный код правильно выдает вывод, предотвращающий стоки.

Вывод модифицированного кода

На следующем рисунке подробно показана каждая итерация до сходимости.

Значения PageRank узлов для каждой итерации модифицированного кода

Итак, это был мой подход к работе с приемниками на наличие висячих узлов в сети. Обратите внимание, что окончательные значения PageRank узлов могут немного отличаться от значений встроенной в networkx функции PageRank. Это связано с тем, что у networkx может быть более надежный подход к решению этой проблемы, или они могли рассмотреть другое значение сходимости и т. д.

  • Полный код можно найти здесь. Модификации приветствуются. 🙂
  • Свяжитесь со мной в LinkedIn, если у вас есть какие-либо вопросы или предложения.

Для этой реализации я использовал Метод распределения баллов . В моей следующей статье я реализовал алгоритм, используя метод случайного блуждания .

Спасибо!

Теория струн инков: если бы узлы могли говорить



Теория струн инков: если бы узлы могли говорить

Теория струн инков: если бы узлы могли говорить

Мы до сих пор не знаем, как расшифровать кипу, системы хранения информации на основе строк, разработанные инками, но тем не менее они остаются захватывающими.

AsianScientist (22 июля 2015 г.) – Я не смотрел кино несколько месяцев и был готов в полной мере воспользоваться развлечениями в полете во время недавней бесконечно долгой поездки на самолете в Перу. Время пролетело немного быстрее в компании Бенедикта Камбербэтча в роли Алана Тьюринга в Игра в имитацию

, история о том, как во время Второй мировой войны были взломаны немецкие машинные коды Enigma.
Запутался в узлах

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

«Добрый вечер! Мы просто едим здесь. Мы приезжаем на такси очень дешево, но теперь, чтобы вернуться, это очень дорого. Пожалуйста, позвоните новому? это то, что я почти уверен, что сказал камердинеру ресторана в ту первую ночь, все формы прошедшего времени ускользнули от меня.

Несколько дней спустя мы покинули космополитическую Лиму и направились в Куско, бывшую столицу инков, расположенную в Андах на высоте 3400 метров над уровнем моря. В окружающей Священной Долине наш проводник извлек ярко окрашенный пучок пряжи, распутав его и обнажив ряд узловатых нитей, свисающих с горизонтальной веревки.

Он объяснил, что инки использовали подобные связки, называемые кипу, для записи информации, кодируя ее в положениях, формах и цветах узлов. В музеях и частных коллекциях осталось всего около 600 кипу (большинство из них было уничтожено испанцами), поэтому он сам сделал это, чтобы показать своим клиентам.
Никогда не недооценивайте инков

Мы стояли перед массивными каменными стенами Саксайуамана, а позже прошли по тропе инков к Мачу-Пикчу, идеально расположенной, искусно созданной каменной цитадели в облаках. Это казалось странным: почему та же самая цивилизация, которая построила эти непреходящие памятники, ограничивалась общением таким примитивным способом и на таком скоропортящемся материале?

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

Крупный план кипу в Музее Ларко. Кредит: Сим Шучжэнь.

Оказывается, ученые давно ломают голову над парадоксом инков — вопросом, почему такая технологически развитая цивилизация так и не разработала систему письма. Кипу, их единственная система записи информации, обычно считалась просто средством представления чисел для целей бухгалтерского учета и переписи населения.

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

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

Но как такая подробная информация может быть закодирована в виде строки? Одна из теорий состоит в том, что кипу — это своего рода трехмерный двоичный код. Исследователи из Гарвардского университета собрали семь битов бинарной информации — например, направление скручивания шнуров, цвет волокон или расположение узлов, прикрепляющих висящие шнуры к основному, — вперед или назад, — которые могут помочь. читатель интерпретирует кипу. Например, один такой бит мог сказать ему читать последовательность как текст, а не как числа; другой может указывать на то, что текст следует читать как имя или событие, и так далее.

Подсчитано, что благодаря накоплению этих бинарных вариантов, наложенных поверх основных последовательностей узлов, инки имели в своем распоряжении более 1500 единиц информации. Для сравнения, шумерских клинописей насчитывалось менее 1500, а египетских иероглифов — менее 800.

Тем не менее, ни одно повествование кипу до сих пор не расшифровано, и эта теория остается спорной и трудно доказуемой.

Усилия продолжаются: математики и криптографы, изучающие кипу с помощью алгоритмов распознавания образов (один похож на алгоритм Google PageRank, а другой — на деревья суффиксов, используемые при анализе последовательности ДНК), определили повторяющиеся последовательности узлов, которые могут указывать на слова или фразы. . Чтобы облегчить такой анализ, исследователи из Гарварда создали онлайн-базу данных кипу, в которой есть записи о каждой мельчайшей детали примерно 200 загадочных связок.

Расшифровывая кипу, мы можем приобщиться к рассказам, ныне скрытым от глаз, о могущественной империи, которая в дни своего расцвета простиралась на 3000 миль. И, возможно, также к мучительно подробным отчетам о популяциях лам или урожаях кукурузы. В любом случае — волшебном или обыденном — разве вы не хотели бы знать?


Эта статья взята из ежемесячной колонки The Bug Report. Нажмите здесь, чтобы увидеть другие статьи из этой серии.

———-

Авторские права: журнал Asian Scientist; Фото: Сим Шучжэнь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *