Повышенный уровень, время – 2 мин)

Тема: Составление запросов для поисковых систем с использованием логических выражений.

Что нужно знать:

· таблицы истинности логических операций «И», «ИЛИ», «НЕ» (см. презентацию «Логика»)

· если в выражении нет скобок, сначала выполняются все операции «НЕ», затем – «И», затем – «ИЛИ»

· логическое произведение A∙B∙C∙… равно 1 (выражение истинно) только тогда, когда все сомножители равны 1 (а в остальных случаях равно 0)

· логическая сумма A+B+C+… равна 0 (выражение ложно) только тогда, когда все слагаемые равны 0 (а в остальных случаях равна 1)

· правила преобразования логических выражений (законы алгебры логики):

Закон Для И Для ИЛИ
двойного отрицания
исключения третьего
исключения констант A · 1 = A; A · 0 = 0 A + 0 = A; A + 1 = 1
повторения A · A = A A + A = A
поглощения A · (A + B) = A A + A · B = A
переместительный A · B = B · A A + B = B + A
сочетательный A · (B · C) = (A · B) · C A + (B + C) = (A + B) + C
распределительный A + B · C = (A + B) · (A + C) A · (B + C) = A · B + A · C
де Моргана

· ввод какого-то слова (скажем, кергуду) в запросе поисковой системы означает, что пользователь ищет Web-страницы, на которых встречается это слово

· операция «И» всегда ограничивает поиск, то есть, в ответ на запрос кергуду И бамбарбия поисковый сервер выдаст меньше страниц, чем на запрос кергуду, потому что будет искать страницы, на которых есть оба этих слова одновременно

· операция «ИЛИ» всегда расширяет поиск, то есть, в ответ на запрос
кергуду ИЛИ бамбарбия поисковый сервер выдаст больше страниц, чем на запрос кергуду, потому что будет искать страницы, на которых есть хотя бы одно из этих слов (или оба одновременно)

· если в запросе вводится фраза в кавычках, поисковый сервер ищет страницы, на которых есть в точности эта фраза, а не просто отдельные слова; взятие словосочетания в кавычки ограничивает поиск, то есть, в ответ на запрос "кергуду бамбарбия" поисковый сервер выдаст меньше страниц, чем на запрос кергуду бамбарбия, потому что будет искать только те страницы, на которых эти слова стоят одно за другим


Пример задания:

В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет:

Запрос Количество страниц (тыс.)
США |Япония | Китай
Япония | Китай
(США & Япония) | (США & Китай)

Сколько страниц (в тысячах) будет найдено по запросу

США

Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.

Решение:

1) заметим, что в силу тождества последний запрос в таблице равносилен такому:

(США & Япония) | (США & Китай) Û США & (Япония | Китай)

2) тогда вводя обозначение для областей

A = США, B = Япония | Китай,

получаем стандартную задачу с двумя переменными:

Запрос Количество страниц (тыс.)
А | B
B
А & B
А ?

3) имеем по формуле (см. решения ниже)

NA = NA|B - NB + NA&B = 450 – 260 + 50 = 240

4) Ответ: 240

Ещё пример задания:

В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет:

Запрос Количество страниц (тыс.)
Ростов & (Орёл & Курск | Белгород)
Ростов & Белгород
Ростов & Орёл & Курск & Белгород

Сколько страниц (в тысячах) будет найдено по запросу

Ростов & Орёл & Курск

Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.

Решение:

5) заметим, что во всех четырёх запросах есть «сомножитель» «Ростов &», поэтому эта задача равносильна такой:

Запрос Количество страниц (тыс.)
Орёл & Курск | Белгород
Белгород
Орёл & Курск & Белгород
Орёл & Курск ?

6) теперь обозначим A = Орёл & Курск и получим задачу с двумя областями:

Запрос Количество страниц (тыс.)
A | Белгород
Белгород
A & Белгород
A ?

7) по формуле для задачи с двумя областями (см. задачи, разобранные ниже)

NA|B = NA + NB - NA&B

получаем

NA = NA|B - NB + NA&B

8) вычисляем: 370 – 204 + 68 = 234.

9) Ответ: 234.

Ещё пример задания:

В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет:

Запрос Количество страниц (тыс.)
Ухо
Подкова
Наковальня
Ухо | Подкова | Наковальня
Ухо & Наковальня
Ухо & Подкова

Сколько страниц (в тысячах) будет найдено по запросу

Подкова & Наковальня

Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.

Решение (вариант 1, рассуждения по диаграмме):

10) построим диаграмму Эйлера-Венна

11) количество сайтов, удовлетворяющих запросу в области i, будем обозначать через Ni

12) здесь 5 областей, причём известны следующие данные:

13) нас интересует область 4. Находим ответ прямой подстановкой:

14) таким образом, ответ – 20.

Решение (вариант 2, рассуждения по диаграмме):

1) пп. 1-2 такие же, как в варианте 1

2) заметим, что в прямую сумму величин областей Ухо, Подкова и Наковальня дважды входят области 2 и 4, поэтому для вычисления достаточно вычесть из суммы Ухо+Подкова+Наковальня размер их объединения (Ухо | Подкова | Наковальня) и величину области 2 (Ухо & Наковальня).

3) тогда сразу получаем

.

4) ответ – 20.

Еще пример задания:

В таблице приведены запросы и количество страниц, которые нашел поисковый сервер по этим запросам в некотором сегменте Интернета:

Запрос Количество страниц (тыс.)
пирожное & выпечка
пирожное
выпечка

Сколько страниц (в тысячах) будет найдено по запросу

пирожное | выпечка

Решение (вариант 1, рассуждения по диаграмме):

5) построим диаграмму Эйлера-Венна, обозначив области «пирожное» (через П) и «выпечка» (В) :

6) количество сайтов, удовлетворяющих запросу в области i, будем обозначать через Ni

7) несложно сообразить, что число сайтов в интересующей нас области равно

N1 + N2 + N3 = (N1 + N2) + (N3 + N2) – N2

8) поскольку нам известно, что по условию

N1 + N2 = 8700

N3 + N2 = 7500

N2 = 3200

сразу получаем

N1 + N2 + N3 = 8700 + 7500 - 3200 = 13000

9) таким образом, ответ – 13000.

Решение (вариант 2, общая формула):

1) сначала выведем формулу, о которой идет речь; построим диаграмму Эйлера-Венна для двух переменных A и B:

2) обозначим через NA, NB, NA&B и NA|B число страниц, которые выдает поисковый сервер соответственно по запросам A, B, A & B и
A | B

3) понятно, что если области A и B не пересекаются, справедлива формула NA|B=NA+NB

4) если области пересекаются, в сумму NA+NB область пересечения NA&B входит дважды, поэтому в общем случае

NA|B = NA + NB - NA&B

5) в данной задаче

NП = 8700, NВ = 7500, NП&В = 3200

6) тогда находим число сайтов в интересующей нас области по формуле

NП|B = NП + NB – NП&B = 8700 + 7500 – 3200 = 13000

7) таким образом, ответ – 13000.

Решение (вариант 3, решение системы уравнений):

1) нарисуем области «пирожное» (обозначим ее через П) и «выпечка» (В) в виде диаграммы (кругов Эйлера); при их пересечении образовались три подобласти, обозначенные числами 1, 2 и 3;

2) составляем уравнения, которые определяют запросы, заданные в условии:

пирожное & выпечка N2 = 3200

пирожное N1 + N2 = 8700

выпечка N2 + N3 = 7500

3) подставляя значение N2 из первого уравнения в остальные, получаем

N1 = 8700 - N2 = 8700 – 3200 = 5500

N3 = 7500 - N2 = 7500 – 3200 = 4300

4) количество сайтов по запросу пирожное | выпечка равно

N1 + N2 + N3 = 5500 + 3200 + 4300 = 13000

5) таким образом, ответ – 13000.

Еще пример задания:

В таблице приведены запросы и количество страниц, которые нашел поисковый сервер по этим запросам в некотором сегменте Интернета:

Запрос Количество страниц (тыс.)
Динамо & Рубин
Спартак & Рубин
(Динамо | Спартак) & Рубин

Сколько страниц (в тысячах) будет найдено по запросу

Рубин & Динамо & Спартак

Решение (вариант 1, круги Эйлера, полная диаграмма):

1) в этой задаче неполные данные, так как они не позволяют определить размеры всех областей; однако их хватает для того, чтобы ответить на поставленный вопрос

2) обозначим области, которые соответствуют каждому запросу

Запрос Области Количество страниц (тыс.)
Динамо & Рубин 1+2
Спартак & Рубин 2+3
(Динамо | Спартак) & Рубин 1+2+3
Рубин & Динамо & Спартак ?

3) из таблицы следует, что в суммарный результат первых двух запросов область 2 входит дважды (1 + 2 + 2 + 3), поэтому, сравнивая этот результат с третьим запросом (1 + 2 + 3), сразу находим результат четвертого:

N2 = (320 + 280) – 430 = 170

4) таким образом, ответ – 170.

Решение (вариант 2, круги Эйлера, неполная диаграмма):

1) заметим, что в этой задаче все запросы (в том числе и тот, результат которого нужно найти, имеют вид

X & Рубин

2) поэтому часть «& Рубин» в каждом из запросов можно просто отбросить, тогда останется только две области:

Запрос Количество страниц (тыс.)
Динамо-1
Спартак-1
Динамо-1 | Спартак-1

здесь добавление «-1» в имени области обозначает «пересечение с областью Рубин»

3) требуется найти размер области «Динамо-1 & Спартак-1»

4) для диаграммы с двумя областями можно использовать общую формулу

NA|B = NA + NB - NA&B

5) из которой следует

NA&B = NA + NB - NA|B

6) в данном случае получаем

NA&B = (320 + 280) – 430 = 170

7) таким образом, ответ – 170.

Ещё пример задания:

В таблице приведены запросы к поисковому серверу. Расположите номера запросов в порядке возрастания количества страниц, которые найдет поисковый сервер по каждому запросу. Для обозначения логической операции «ИЛИ» в запросе используется символ |, а для логической операции «И» – &.

1) принтеры & сканеры & продажа

2) принтеры & сканеры

3) принтеры | сканеры

4) принтеры | сканеры | продажа

Решение (вариант 1, рассуждение с использованием свойств операций «И» и «ИЛИ»):

1) меньше всего результатов выдаст запрос с наибольшими ограничениями – первый (нужны одновременно принтеры, сканеры и продажа)

2) на втором месте – второй запрос (одновременно принтеры и сканеры)

3) далее – третий запрос (принтеры или сканеры)

4) четвертый запрос дает наибольшее количество результатов (принтеры или сканеры или продажа)

5) таким образом, верный ответ – 1234 .

Возможные проблемы: · нужно внимательно читать условие, так как в некоторых задачах требуется перечислить запросы в порядке убывания количества результатов, а в некоторых – в порядке возрастания · можно ошибиться в непривычных значках: «И» = &, «ИЛИ» = | (эти обозначения привычны для тех, кто программирует на языке Си) · можно перепутать значение операций «И» и «ИЛИ», а также порядок выполнения цепочки операций (сначала – «И», потом – «ИЛИ») · для сложных запросов не всегда удастся так просто расположить запросы по возрастанию (или убыванию) ограничений

Решение (вариант 2, через таблицы истинности):

1) каждое из условий можно рассматривать как сложное высказывание

2) обозначим отдельные простые высказывания буквами:

A: принтеры(на странице есть слово «принтеры»)