- объяснять, как работает поисковая система: робот, индекс и ранжирование
- составлять запросы с AND, OR, NOT, скобками и кавычками и упорядочивать запросы по числу найденных страниц
- строить круги Эйлера — Венна для двух и трёх ключевых слов и применять формулу включений и исключений
- пошагово решать кодируемые задания DİM о поисковых запросах
Айсель готовит проект о каспийских тюленях. По запросу «Каспий» поисковая система находит миллионы страниц — прочитать их все невозможно. По запросу «каспийский тюлень» результатов намного меньше, а если добавить слово «охрана», их станет ещё меньше. Правильно составленный запрос находит нужное за минуты, а не за часы. Эту тему проверяет и вступительный экзамен DİM: в трёх из четырёх экзаменов 2025–2026 годов было кодируемое задание — в таблице даны запросы и число найденных страниц, а нужно найти результат другого запроса.
Как работает поисковая система
Служба, которая по введённым пользователем ключевым словам находит подходящие веб-страницы и показывает их списком. Примеры: Google, Bing, Yandex.
В момент запроса поисковая система не обходит весь интернет — это заняло бы часы и даже дни. Она ищет в заранее подготовленном индексе. Работа идёт так:
- 1Поисковый робот обходит страницы
Специальная программа — поисковый робот («паук», краулер) — переходит со страницы на страницу по ссылкам и загружает текст каждой страницы.
- 2Индексирование
Для каждого слова составляется список страниц, на которых оно встречается. Это похоже на алфавитный указатель в конце книги: «Низами — с. 12, 48, 95».
- 3Обработка запроса
Ключевые слова запроса ищутся в индексе, а их списки страниц пересекаются или объединяются в соответствии с логическими операциями.
- 4Ранжирование
Найденные страницы упорядочиваются по соответствию запросу: есть ли слово в заголовке, сколько сайтов ссылается на страницу и т. д. На странице результатов показано и примерное число, например «около 120 000 результатов».
Итак, каждое ключевое слово задаёт множество страниц — все страницы, где встречается это слово. А логические операции в запросе — это операции над такими множествами. На этой простой идее построена вся остальная часть урока.
Язык запросов: AND, OR, NOT
Ключевые слова можно соединять логическими операциями. В заданиях DİM они пишутся по-английски — AND, OR, NOT; в некоторых книгах вместо них используют знаки &, | и ~. Эти операции вы знаете по уроку «Логические операции и логические элементы»: теперь они применяются не к высказываниям, а к множествам страниц.
| Операция | Запись | Какие страницы найдутся | Число страниц |
|---|---|---|---|
| И (пересечение) | A AND B, A & B | страницы, где есть оба слова | уменьшается |
| ИЛИ (объединение) | A OR B, A | B | страницы, где есть хотя бы одно из слов | увеличивается |
| НЕ (отрицание) | A AND NOT B, A & ~B | страницы, где есть A, но нет B | уменьшается |
| Кавычки | "A B" | страницы, где слова стоят рядом именно в таком порядке | уменьшается |
Если скобок нет, сначала выполняется NOT, затем AND и последним OR. Например, запрос A OR B AND C означает A OR (B AND C). Если нужен другой порядок, ставят скобки: (A OR B) AND C. У настоящих поисковых систем есть и свои правила: например, в Google слова через пробел соединяются как AND, OR пишется заглавными буквами, минус перед словом (-реклама) исключает его, а кавычки ищут точную фразу.
Поисковому серверу заданы четыре запроса:
1) шахматы OR шашки
2) шахматы AND шашки AND турнир
3) шахматы
4) шахматы AND турнир
Расположите номера запросов в порядке возрастания числа найденных страниц.
Показать решениеСкрыть решение
На каждой странице запроса 2 есть все три слова, значит, есть и «шахматы», и «турнир»: эти страницы входят в результат запроса 4.
На каждой странице запроса 4 есть «шахматы»: это часть запроса 3.
Каждая страница со словом «шахматы» входит и в запрос 1, а запрос 1 добавляет ещё страницы со словом «шашки».
Значит, 2 ⊆ 4 ⊆ 3 ⊆ 1.
Ответ: 2, 4, 3, 1.
Круги Эйлера — Венна: два ключевых слова
Изобразим страницы, найденные по каждому ключевому слову, кругом. Общая часть кругов — страницы, где есть оба слова (AND), вся площадь, занятая двумя кругами, — результат OR, а часть круга вне другого круга получается с помощью NOT. Такой рисунок называется кругами Эйлера — Венна.
Если сложить n(A) и n(B), чтобы сосчитать страницы запроса A OR B, общая часть будет учтена дважды: она лежит и в круге A, и в круге B. Поэтому её вычитают один раз:
- n(A), n(B)число страниц, найденных по запросам A и B
- n(A AND B)число страниц, где есть оба слова
- n(A OR B)число страниц, где есть хотя бы одно из слов
Формула включений и исключений для двух множеств. Если известны три величины из четырёх, находится и четвёртая.
- n(A AND NOT B)число страниц, где есть A, но нет B
Из круга A вычитается общая часть, а не весь B!
В таблице даны запросы и число найденных страниц:футбол — 520волейбол — 380футбол OR волейбол — 760
Сколько страниц будет найдено по запросам а) футбол AND волейбол, б) футбол AND NOT волейбол, в) волейбол AND NOT футбол?
Показать решениеСкрыть решение
б) n(футбол AND NOT волейбол) = 520 − 140 = 380.
в) n(волейбол AND NOT футбол) = 380 − 140 = 240.
Проверка: сумма трёх частей 380 + 140 + 240 = 760 = n(футбол OR волейбол). ✓
1) n(A) = 250, n(B) = 400, n(A AND B) = 90. n(A OR B) = ?
2) n(A OR B) = 900, n(A) = 600, n(A AND B) = 150. n(B) = ?
3) n(A) = 330, n(B) = 270, n(A OR B) = 600. n(A AND B) = ? Что это означает?
Показать решениеСкрыть решение
2) 900 = 600 + n(B) − 150 ⇒ n(B) = 900 − 600 + 150 = 450.
3) n(A AND B) = 330 + 270 − 600 = 0: общих страниц нет, круги не пересекаются.
Три ключевых слова: задания DİM
При трёх ключевых словах три круга делят диаграмму на 7 частей. Пронумеруем части и обозначим число страниц в каждой из них N₁, N₂, …, N₇. Любой запрос — это сумма некоторых из этих частей; в этом весь секрет задания.
| Запрос | Части диаграммы |
|---|---|
A | 1 + 4 + 5 + 7 |
A AND B | 4 + 7 |
A AND B AND C | 7 |
(A OR B) AND C | 5 + 6 + 7 |
A AND NOT B | 1 + 5 |
A OR B OR C | 1 + 2 + 3 + 4 + 5 + 6 + 7 |
- n(A AND B AND C)число страниц, где есть все три слова (центр, часть 7)
Формула включений и исключений для трёх множеств: при вычитании попарных пересечений центр вычитается трижды, поэтому его один раз добавляют обратно.
- 1Нарисуйте диаграмму
Нарисуйте по кругу на каждое ключевое слово и пронумеруйте части.
- 2Запишите таблицу через части
Каждую строку таблицы запишите как сумму частей, например: n(B AND C) = N₆ + N₇.
- 3Начните с центра
Начните с самого узкого запроса (обычно AND всех трёх слов) и находите части изнутри наружу.
- 4Выразите искомый запрос
Определите, из каких частей состоит искомый запрос, и сложите их.
- 5Проверьте
Ни одна часть не может быть отрицательной; по возможности проверьте ответ и по формуле.
В таблице даны запросы и число страниц, найденных поисковым сервером:(книга OR журнал) AND поэзия — 540книга AND поэзия — 310журнал AND поэзия — 290
Сколько страниц будет найдено по запросу книга AND журнал AND поэзия?
Показать решениеСкрыть решение
n(книга AND поэзия) = N₅ + N₇ = 310
n(журнал AND поэзия) = N₆ + N₇ = 290
n((книга OR журнал) AND поэзия) = N₅ + N₆ + N₇ = 540
Если сложить первые два равенства, N₇ учтётся дважды: (N₅ + N₇) + (N₆ + N₇) = 600.
Значит, N₇ = 600 − 540 = 60.
Ответ: 60.
В таблице даны запросы и число найденных страниц:Каспий AND нефть AND газ — 90нефть AND газ — 230Каспий AND газ — 170
Сколько страниц будет найдено по запросу (Каспий OR нефть) AND газ?
Показать решениеСкрыть решение
N₇ = 90 (все три слова).
n(нефть AND газ) = N₆ + N₇ = 230 ⇒ N₆ = 140.
n(Каспий AND газ) = N₅ + N₇ = 170 ⇒ N₅ = 80.
n((Каспий OR нефть) AND газ) = N₅ + N₆ + N₇ = 80 + 140 + 90 = 310.
Короткий путь: 170 + 230 − 90 = 310 — это формула включений и исключений для двух кругов внутри круга C.
Ответ: 310.
В таблице даны запросы и число найденных страниц:A — 400B — 500C — 300A OR B OR C — 970A AND B — 100A AND C — 70A AND B AND C — 30
Сколько страниц будет найдено по запросу B AND NOT C?
Показать решениеСкрыть решение
B AND NOT C — это часть круга B вне C: N₂ + N₄.Вся диаграмма — 970. Если убрать круг C (300), останется N₁ + N₂ + N₄ = 970 − 300 = 670.
Найдём N₁ (только A): N₇ = 30; N₄ = 100 − 30 = 70; N₅ = 70 − 30 = 40; N₁ = 400 − 70 − 40 − 30 = 260.
Значит, N₂ + N₄ = 670 − 260 = 410.
Заметим:
B AND C в таблице не дан, но он и не нужен.Ответ: 410.
Операции запросов точно соответствуют операциям над множествами в Python: & — AND, | — OR, - — AND NOT. Проверьте формулу сами на маленьком примере (страницы обозначены номерами):
football = {1, 2, 3, 4, 5, 6, 7}
volleyball = {5, 6, 7, 8, 9}
basketball = {2, 7, 9, 10}
print('football AND volleyball:', sorted(football & volleyball))
print('football OR volleyball:', sorted(football | volleyball))
print('football AND NOT volleyball:', sorted(football - volleyball))
print('(football OR volleyball) AND basketball:',
sorted((football | volleyball) & basketball))
# inclusion-exclusion: n(A OR B) = n(A) + n(B) - n(A AND B)
n_or = len(football) + len(volleyball) - len(football & volleyball)
print(n_or, len(football | volleyball))▸ Ожидаемый результат
football AND volleyball: [5, 6, 7] football OR volleyball: [1, 2, 3, 4, 5, 6, 7, 8, 9] football AND NOT volleyball: [1, 2, 3, 4] (football OR volleyball) AND basketball: [2, 7, 9] 9 9
- 1.n(A) = 300, n(B) = 200, n(A AND B) = 50. n(A OR B) =
- 2.n(A) = 300, n(A AND B) = 50. n(A AND NOT B) =
- 3.n((A OR B) AND C) = 400, n(A AND C) = 250, n(B AND C) = 230. n(A AND B AND C) =
- 4.n(A AND B AND C) = 40, n(A AND C) = 150, n(B AND C) = 110. n((A OR B) AND C) =
Главное
- Поисковая система ищет не в самом интернете, а в индексе, заранее собранном роботами.
- AND уменьшает число страниц (пересечение), OR увеличивает (объединение), NOT исключает; без скобок порядок: NOT, AND, OR.
- n(A OR B) = n(A) + n(B) − n(A AND B); n(A AND NOT B) = n(A) − n(A AND B).
- Три ключевых слова делят диаграмму на 7 частей; любой запрос — сумма этих частей.
- В задании DİM начинайте с центра (AND всех трёх слов), считайте изнутри наружу и проверяйте, что ни одна часть не отрицательна.
Проверь себя
Вопросов: 12. Каждый правильный ответ приносит XP.