Ниже в табличной форме представлен фрагмент базы данных «Отправление поездов дальнего...

0 голосов
401 просмотров

Ниже в табличной форме представлен фрагмент базы данных «Отправление поездов дальнего следования»:
Пункт назначения Категория поезда Время в пути Вокзал
Адлер фирменный 29:46 Казанский
Адлер скорый 38:35 Курский
Адлер фирменный 25:30 Казанский
Адлер скорый 39:13 Курский
Алма-Ата скорый 102:22 Павелецкий
Амстердам скорый 36:40 Белорусский
Анапа пассажирский 35:37 Белорусский
Архангельск скорый 20:46 Ярославский
Архангельск пассажирский 46:30 Ярославский
Архангельск скорый 21:25 Белорусский
Астана скорый 58:00 Казанский
Астрахань скорый 27:56 Павелецкий

Сколько записей в данном фрагменте удовлетворяют условию

(Категория поезда = «скорый») ИЛИ (Вокзал = «Казанский»)?

В ответе укажите одно число — искомое количество записей.


Информатика (17 баллов) | 401 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
Категория поезда = «скорый» - таких записей у нас 8
Вокзал = «Казанский» - таких записей у нас 3
Связка у нас по "ИЛИ", поэтому достаточно чтобы выполнилось только одно из условий. Но если выполнились оба, то у нас такая запись учтена дважды (в каждом из условий).
Найдем количество записей, в которых выполнились оба условия одновременно - их 1.
Окончательно 8+3-1=10 записей.
Ответ: 10
(142k баллов)
0

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

0

Ах да забыл, 1 вычитается за счет того что стоит логическое ИЛИ

0

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

0

На самом деле запросы проходят оптимизацию. Вот один из таких алгоритмов для связки "ИЛИ". 1) Делаем выборку по первому из условий. 2) Делаем выборку по второму из условий. 3) Смотрим, какая из выборок дала МЕНЬШЕЕ количество записей и в ней проверяем выполнение второго условия. 4) Вычитаем из суммы найденных по 1) и 2) записей количество, найденное по 4)

0

Собственно, именно он у меня в решении и реализован.

0

Такой алгоритм относится к категории "ленивых", когда "лень" просматривать в каждой записи все выражение. А Вы предложили "жадный" алгоритм. О ленивых и жадных алгоритмах Вы можете почитать в Интернет.