ЦветРХ/В> <Д0>
НазваниеРХ/ВХ/РХД0> ЦветР>ВХДО>
НазваниеРХ/ВХД0>
ЦветРХ/ВХДО>
НазваниеРХ/ВХД0>
<ДВ>
Kpacный
Red<^D>
Белый<Доп1ХДО>
White
Темно-синий<Доп1Х/Т0> Navy<^D>
<^R>
Оранжевый<Доп1ХДО> <ТО>Огапде<ДО>
Голубой<Доп1ХДО>
<ТО>Суап<ДО>
Коричневый<Доп1ХДО> <ТО>Вго\л/п<ДО>
<^R>
Желтый<Доп1ХД0>
<Т0>Уе11о\л/<Д0>
Синий<Доп1ХДО>
<Т0>В1ие<Д0>
140
Фиoлeтoвый<ДD> <ТО>Мадеп1а<ДО>
Зеленый<Доп1ХД0> <ТО>Сгееп<ДО>
Светло-голубой<Доп1ХДО> <Т0>8куВ1ие<Д0>
Золотой<Доп1ХДО> <Т0>Со1с1<Д0>
<ДВ>
Черный<Доп1ХД0> <Т0>В1аск<Д0>
Пурпурный<Доп1ХДО> <Т0>Ригр1е<Д0>
Серебряный<Доп1ХД0> Silver<ДD>
<ДR>
3 Эго строницл Гошн - Ukfotoft Internet Cxpiorir
е«й« f^ni CetmK Справке
^Пт 0 [g. ^ Й0 • О iS, -51
Адрес: }^У;\>1ои»айМГейиД Г\Ю4ир-.П ш» ,Уче6йи22Jibai
,^ВП8РЮС0Д
^Готеое
^ local btrarwt
Рис.
3.7 Вид страницы с рисунками, для размещения которых использовался контейнер
141
Основные информационные объекты. Их создание и компьютерная обработка
<ДАВ1Е>
Несмотря на такое пугающе длинное описание, мы надеемся, что вам все понятно. Атрибут BORDER тега заказывает рисование сетки по границам ячеек таблицы, а специальные символы
<ТО>...<ДО>
<ТО>...<ДО>
<^R> <ДАВЕЕ>
Внутри контейнеров ... расположены, сами понимаете, теги .
Какие теги используются для размещения в табличном виде информации на HTML-странице? Образуют ли эти теги контейнер?
@ Как можно зафиксировать расположение различных информационных объектов на HTML-странице?
Просмотрите еще раз приведенное в этом параграфе описание таблицы на языке HTML.
а) Зачем в описании таблицы использован тег ? Чем будет отличаться изображение этой таблицы на экране компьютера от таблицы 3.1 ?
б) Для каких целей там же служит атрибут ALIGN="CENTER" контейнера <Р>...Р>.
в) Узнайте, для чего служит атрибут ALIGN="CENTER" при использовании в теге . Какие он может принимать значения?
@ На рисунке 3.7 надо сделать так, чтобы обе картинки имели одинаковую высоту, а подписи под ними расположились по центру. С помощью каких тегов и атрибутов этого можно добиться?
142
§ 32 Объекты других приложений в HTML
Л
Нередко случается так, что информационные объекты, которые вы хотите разместить на своей HTML-странице, оказываются изготовленными средствами других приложений. Например, это может быть текстовый документ, подготовленный с помощью Microsoft Word.
Можно предложить два способа поместить документ в формате Microsoft Word на HTML-страницу. Но прежде давайте вспомним о контейнере.
Контейнер — это, как вы знаете, пара тегов, придающих новые свойства объектам, расположенным внутри их. Важно помнить, что контейнеры должны располагаться строго один внутри другого.
Самое интересное, что контейнером может быть не только пара HTML-тегов, но и несравненно более сложные объекты. Например, программа просмотра HTML-страниц. А содержимым такого контейнера может служить текстовый процессор Microsoft Word. Чисто внешне это будет выглядеть так, как если бы внутрь окна программы просмотра вставили окно текстового процессора Word. При этом к пунктам главного меню программы Microsoft Internet Explorer добавятся пункты главного меню Word.
Внутрь контейнера программы просмотра может попасть и окно графического редактора CorelDraw!, и вообще окно любой программы, разработчики которой придерживались оговоренного стандарта. Возможно, вам пригодится его название: ActiveX.
Для того чтобы программы могли использовать окна друг друга, как контейнер, они должны поддерживать тех нологию ActiveX.
ч
Текстовый редактор, расположенный внутри контейнера другой программы, немного отличается по своим возможностям от варианта «независимого» запуска. И в первую очередь ограничена его возможность работы с файлами.
Так, невозможно использовать текстовый редактор в многооконном режиме. В случае попытки открыть второй файл процессор Word просто стартует, как еще одна независимая программа в своем собственном окне.
Каким же образом можно воспользоваться программными контейнерами? Достаточно просто сделать ссылку не на HTML-файл, а на файл в формате Microsoft Word или, скажем, CorelDrawl.
143
Основные информационные объекты. Их создание и компьютерная обработка
Когда вы, выполняя лабораторную работу № 11, проделаете это в первый раз, обратите внимание на время, в течение которого откроется нужный вам документ. Оно гораздо больше открытия HTML-документа со сравнимым объемом информации, и это вполне понятно. Две довольно сложные и объемные программы, рабо-таюш;ие одна внутри другой, как в контейнере, равносильны многозадачному запуску, когда системные ресурсы используются уже несколькими приложениями. Иными словами, это примерно то же самое, что и работа с двумя окнами, в одном из которых, скажем, программа просмотра, а в другом — графический редактор. Вы наверняка замечали, как это сказывается на быстродействии компьютера.
Тем не менее в Интернете довольно много документов именно в формате Microsoft Word и Adobe Acrobat (их расширение — pdf). Чем же они лучше привычных для нас HTML-файлов?
Во-первых, документы в формате Microsoft Word очень легко править. Для этого фактически не требуется никаких особых навыков.
Во-вторых, документы в формате текстового редактора гораздо больше приспособлены к печати на принтере, чем HTML-файлы. Поэтому многие отчеты, аналитические записки, планы работы и т. п. хранятся тоже в виде файлов Microsoft Word.
Файлы же Adobe Acrobat — это фактический стандарт электронных книг, в виде которых публикуется очень большое количество технической документации, в том числе и руководства пользователей.
Такого сорта публикацию документов часто используют во «внутреннем Интернете», или, по-другому, в Интранете, когда информация внутри одной организации передается по высокоскоростной локальной сети.
Скажем еш;е о возможности преобразования документа, созданного в текстовом процессоре Microsoft Word, непосредственно в HTML-формат. Для того чтобы ею воспользоваться, необходимо выбрать пункт главного меню Файл, подпункт Сохранить в формате HTML. Конечно, не все элементы оформления вашего документа в формате Microsoft Word будут точно так же выглядеть и в формате HTML, но в обш;ем и целом такое преобразование обеспечивает удовлетворительное качество.
ф Какую технологию должны поддерживать программы, чтобы они могли использовать окна друг друга?
Q Какие два пути существуют, чтобы поместить Word-документ на HTML-страницу?
144
В чем преимущества размещения на HTML-странице информационных объектов в тех форматах, в которых они изготовлены в соответствующих приложениях?
Назовите некоторые ограничения в работе приложений, посредством которых создаются или обрабатываются информационные объекты непосредственно на HTML-странице.
□Г
§33
Компьютерные словари и системы перевода текстов
М
Расширение возможностей применения компьютерной техники определено двумя основными факторами: ростом мош;но-сти компьютеров (памяти, быстродействия) и разработкой эффективных информационных моделей, включая алгоритмы обработки информации. Работая совместно, языковеды, специалисты в области математического моделирования и разработчики эффективных алгоритмов создали так называемые системы компьютерного перевода текстов. Такие системы основываются на моделях грамматики естественного языка и словарях, в которых словам и словосочетаниям одного языка сопоставляются варианты их перевода на другой язык. Обычно такие системы включают в себя те или иные модели искусственного интеллекта (о них мы рассказывали в главе 4 учебника для 10 класса). Системы компьютерного перевода могут быть адаптивными (т. е. приспосабливаюш;имися к особенностям переводимого текста) и самообучаюш;имися. Ясно, что если переводится текст, относяш;ийся к проектированию и строительству зданий, то ему присуш;и своя терминология, свои речевые обороты и т. п. В этом случае система перевода автоматически подстраивается — как было сказано выше, адаптируется — к такому тексту, выбирая при переводе из множества суш;ествуюш;их вариантов тот, который наиболее близок к теме сообш;ения.
Любая система компьютерного перевода работает тем эффективнее, чем более формализован текст, который подвергается переводу. Такими формализованными текстами в первую очередь являются технические описания, инструкции, нормативные документы, акты, предписания и другая так называемая деловая проза. Ее достаточно высокая формализованность — следствие того, что разными людьми она должна пониматься однозначно. Вспомните, о чем мы рассказывали в учебнике для 10 класса: средством для достижения однозначности понимания информации является формализация ее представления.
145
Основные информационные объекты. Их создание и компьютерная обработка
Но перевод художественной прозы и поэтических текстов остается искусством, т. е. деятельностью, доступной только человеку.
Без словарей не сможет работать никакая система компьютерного перевода. Впрочем, электронные словари могут успешно использоваться и независимо от программ компьютерного перевода. Нередко такие словари являются многоязычными. Среди российских словарей наиболее популярными являются словари Lingvo, Контекст и Мультилекс.
Что такое система компьютерного перевода текстов? Для перевода каких текстов ее целесообразно использовать?
В чем вы видите причины востребованности систем компьютерного перевода текстов?
Приведите примеры текстов, относящихся к деловой прозе.
Укажите, в чем вы видите преимущества компьютерного словаря перед словарем в бумажном исполнении. Постарайтесь назвать не менее трех различных преимуществ.
Нередко для проверки качества работы системы машинного перевода в качестве теста используют так называемый двойной перевод текста: сначала текст переводят на иностранный язык, а затем с помощью той же системы переводят полученный текст на исходный язык. Однажды в качестве тестового примера был взят текст: «Телом слаб, но духом крепок». После двойного перевода получилась фраза: «Спирт крепок, а мясо протухло». Объясните причины такого результата.
ОТ
§34
Компьютерная обработка графических информационных объектов
Работе с компьютерной графикой вы наверняка учились на уроках информатики еш;е в 8 и 9 классах. Именно тогда вы познакомились с основными видами компьютерных программ, предназначенных для создания и обработки изображений. Напомним их: в графические редакторы; с их помош;ью создаются и редактируются рисунки в цифровом представлении; в программы обработки фотоизображений; они позволяют добавить изображению яркость или контрастность, отретушировать изображение, устранив какие-либо недостатки, создать разнообразные эффекты;
146
• программы, позволяющие объединять текст и рисунки, формировать из них макет книги или журнала; такие программы называются программами компьютерной верстки;
• программы создания слайд-фильмов и мультипликации;
• программы создания презентаций; графическое и звуковое сопровождение, синтезируемое с их помощью, — важное подспорье при любом выступлении.
Напомним также, что в зависимости от способа формирования изображений компьютерную графику подразделяют на векторную и растровую. В случае растровой графики картинка на экране компьютера формируется заданием каждого пикселя отдельно. При векторном способе геометрический образ, создаваемый группой пикселей, описывается формулами.
С векторной графикой вы, в частности, имели дело, когда создавали рисунки средствами текстового процессора Word. Теперь вы на примере возможностей редактора Adobe Photoshop подробнее познакомитесь с растровой графикой. Adobe Photoshop — это мощный профессиональный пакет, и в наши планы не входит рассмотрение всех возможностей этого пакета.
Основные инструменты, с помощью которых создается изображение, примерно одинаковы во всех графических редакторах, и мы подробнее поговорим о них в описании лабораторной работы. А сейчас обсудим некоторые принципиальные особенности данного редактора.
Первая из них состоит в том, что, кроме простых инструментов выделения геометрической формы, в Adobe Photoshop имеются инструменты, позволяющие выделять объекты сложной формы, а также области на основе цвета. Для этого используются различные варианты инструмента Лассо.
Один из вариантов этого инструмента, обозначенный пиктограммой .^1, позволяет обрисовывать выделяемую область движением мыши по краю нужного объекта. При этом нужно держать нажатой левую клавишу мыши.
Многоугольное (полигональное) лассо — его пиктограмма выглядит так: — предназначено для получения сложной выде-
ленной области, ограниченной отрезками прямых. Каждый щелчок левой клавишей фиксирует точку начала или конца отрезка. Двойной щелчок левой клавишей завершает построение выделенной области соединением первой и последней точек. Другой способ завершения — щелчок в первой точке, с которой было начато построение выделения. При этом у курсора мыши, имеющего вид значка инструмента, снизу справа появляется окружность, означающая замыкание выделяемой области.
Инструмент — Магнитное лассо позволяет выделить в изображении область неправильной формы перемещением мыши вдоль границы области. В местах изменения кривизны (перегиба фигуры)
147
Основные информационные объекты. Их создание и компьютерная обработка
щелкайте левой клавишей, чтобы кривая выделения меняла на этом участке свое направление. Линия выделения сама изгибается за курсором по разделу цветовых оттенков. Окончание выделения — двукратный щелчок левой клавишей. После этого контур автоматически замкнется.
Инструмент Волшебная палочка (вот ее пиктограмма: |)
позволяет создавать выделенную область, исходя из цветовой близости рядом расположенных пикселей. Этот инструмент удобно применять для выделения областей с одинаковыми или близкими цветами. В панели свойств этого инструмента имеется параметр Допуск, который определяет цветовой диапазон выделения. Значение этого параметра может быть от О до 255 и определяется обычно методом подбора. Чем меньше значение, тем ближе будут цвета и оттенки, которые попадут в выделенную область. При допуске О выделятся только элементы указанного цвета. При допуске 255 в выделенную область попадут пиксели всех цветов, а значит будет выделено все изображение.
Над выделенными с помощью любого инструмента фрагментами можно выполнять разнообразные операции: копирование, перемещение в пределах данного изображения или в другие документы, удаление и многое другое.
Второй важной особенностью Adobe Photoshop является механизм слоев. Редактировать растровый графический объект сложной структуры весьма непросто. Чтобы облегчить эту работу, можно распределить фрагменты изображения по отдельным слоям — редактировать его станет намного удобнее.
Опишем типы слоев.
Когда вы даете команду создания нового документа, Adobe Photoshop создает один экранный лист указанного вами размера, называемый Фоном. Это особый вид слоя. Он не может иметь прозрачных участков, так как всегда является самым нижним. Но зато над ним можно надстроить еще целый ряд дополнительных слоев — прозрачных пленок, называемых изобразительными слоями. В каждом изображении может быть до 100 слоев. На каждом слое вы создаете фрагмент рисунка, а остальная часть изобразительного слоя остается прозрачной. Сквозь прозрачные участки слоя видны нижележащие слои. Фрагмент на данном слое вы можете редактировать независимо от фрагментов рисунка, расположенных на других слоях.
Особый вид слоев — корректирующие слои. Они могут работать как маски, пропуская из нижележащих слоев в общее изображение то, что попадет в «отверстие» в маске, могут применять различные эффекты к нижележащим слоям, осуществлять цветовую и тоновую коррекцию отдельных слоев или групп слоев. Меняя параметры корректирующего слоя, вы получаете разные результаты, никак не затрагивая самого изображения.
148
Для выполнения действий над слоями имеется специальная палитра, вызов которой осуществляется через меню Окно/Показать слои.
В палитре имеется список слоев с миниатюрами — уменьшенными изображениями. Справа от миниатюры — название слоя. В каждый момент времени можно редактировать только один активный слой. Его строка выделена в палитре синим цветом. Для активизации другого слоя следует щелкнуть по строке с его названием в палитре.
Когда слой активизирован, то в верхней части палитры можно изменить уровень непрозрачности для накладываемой краски: 0% означает, что слой остается прозрачным; 100% означает, что исходное изображение закрашивается полностью. Сразу оговорим, что данное действие можно выполнять, только если установлен режим Норма; именно он устанавливается по умолчанию.
Можно выбрать другой режим. В зависимости от выбранного режима Adobe Photoshop позволяет смешивать наносимые цвета с имеющимися на изображении самыми разнообразными способами (их около 20).
На палитре Слои содержатся переключатели режимов, позволяющие блокировать (запрещать) закраску прозрачных пикселей, изменение цвета непрозрачных пикселей активного слоя, рисование на нем, сдвиг слоя относительно других.
К активному слою могут быть применены эффекты, изменяющие отображение закрашенных пикселей выбранным способом, создающие свечение краев объектов, окаймление границ объектов и т. д. Эффект не изменяет слой и не модифицирует ни одного пикселя. Он модифицирует только отображение на экране, сам же рисунок остается неизменным.
Эффекты применимы к слоям любого типа. Они действуют лишь на видимую часть слоя, т. е. не влияют на прозрачные и замаскированные (защищенные от воздействий) области слоя. Комплект выбранных для слоя эффектов называется стилем слоя. Чтобы применить тот или иной эффект, нужно щелкнуть кнопку Добавление стиля слоя внизу палитры Слои, выбрать эффект из списка, а затем в диалоговом окне задать его параметры. Рядом с названием слоя, где используется какой-либо эффект, справа появляется условный значок f.
Пока вы работаете в Adobe Photoshop, выполняя шаг за шагом сложную послойную работу, изображение может быть сохранено только в файле с расширением psd. После того как изображение будет полностью создано, необходимо включить видимость всех слоев и выполнить их объединение командой Слой/Объединить видимые. После этой операции вам будут доступны команды сохранения в широко применяемых форматах gif, jpg и jpeg, где размеры файлов уменьшаются во много раз по сравнению с файлами с расширением psd.
149
Основные информационные объекты. Их создание и компьютерная обработка
Ш Ш£Ю«аВЫИШ1
@ Перечислите основные виды программного обеспечения, предусматривающего работу с графическими объектами, и для каждого вида укажите его назначение.
@ В чем отличие векторной графики от растровой?
@ Назовите преимущества, которые дает механизм слоев для формирования изображения.
^ Перечислите типы слоев, существующих в Adobe Photoshop. Каково назначение слоя каждого типа?
@ Какие способы выделения обрабатываемой области рисунка предусмотрены в Adobe Photoshop?
ш
§35
Компьютерная обработка цифровых фотографий
М
в мире современных технологий важным источником видеоинформационных объектов стал цифровой фотоаппарат. Преимущества цифровой фотографии очевидны:
в легкость создания изображения;
в возможность проверки на месте съемки качества изображения в целом;
• возможность передачи созданного видеоинформационного объекта по телекоммуникационным сетям;
в легкое встраивание в другие виды электронных информационных объектов (например, в текст документа);
в возможность обработки средствами компьютерной графики.
Вот об обработке цифровых фотографий у нас и пойдет речь в этом параграфе.
Первое, о чем мы расскажем, — это тональная и цветовая коррекция. Коррекцией называется изменение характеристик изображения, позволяющее добиться нужного качества.
Нередко фотографии по тем или иным причинам (обычно связанным с условиями съемки) оказываются нечеткими, блеклыми или недостаточно контрастными. Контраст — степень тонового различия между областями изображения. Яркость — характеристика цвета, определяющая его интенсивность в изображении. Фактически яркость определяется числом пикселей данного цветового оттенка.
150
Гистограмма
Середина: 52,72 Среднеквадратное отклонение; 36,95 Медиана: 38 Пикселы: 4915200
Уровень: 188 Счет: 362 Процентах: 99,68 Кэш уровень: 1
Рис. 3.8 Гистограмма яркости
Уровни
В
ок
Сброс
Загрузить...
Сохранить...
Опции...
f/ Предпросмотр
Рис. 3.9 Диалоговое окно изменения уровней яркости
151
Основные информационные объекты. Их создание и компьютерная обработка
Гистограмма
т
-Канал:] Яркость
Середина: 114,70 Уровень:
Среднеквадратное отклонение: 90,37 Счет:
Медиана: 86 Процентаж:
Пикселы: 4915200 Кэш уровень: 1
ОК
Рис. 3.10 Гистограмма яркости после преобразования уровней
Adobe Photoshop позволяет для любого рисунка посмотреть распределение яркостей по тонам. Для этого надо воспользоваться диалоговым окном в меню Изображение/Гистограмма. Представленная в этом окне диаграмма (рис. 3.8) отображает по горизонтали значение тона, а по вертикали количество пикселей данного тона в изображении, т. е. яркость, освещенность. К примеру, из диаграммы, представленной на рисунке 3.8, видно, что яркость исходной фотографии недостаточна: отсутствуют пиксели светлых тонов, зато очень много пикселей темных тонов. Вывод: требуется коррекция. Отметим, что гистограмма используется только для получения информации об изображении и для корректировки распределения яркости в рисунке не предназначена!
Что касается настройки тонов и яркости изображения, то для этого надо воспользоваться меню Изображение/Коррекция/Уровни. В появившемся диалоговом окне можно передвинуть левый маркер на начало диапазона, а правый маркер на один из пиков (рис. 3.9). Тем самым расширяется область светлых тонов на выходе.
Если вы посмотрите на гистограмму после этого преобразования, то увидите ее такой, какой она представлена на рисунке 3.10.
Видно, что распределение стало более равномерным. Что при этом происходит с фотографией, вы увидите при выполнении лабораторной работы.
Самый простой способ тональной коррекции всего изображения или выделенного фрагмента осуществляется с помощью инструмен-
152
тов настройки в диалоговом окне, вызываемом командой Изображение/Коррекция/Яркость-Контраст (рис. 3.11). Перемещения маркеров вдоль шкалы изменяют яркость изображения (освещенность) и контраст (четкость граничных линий).
На гистограмме проведенное изменение яркости отразилось так, как показано на рисунке 3.12, — начало диапазона яркости сместилось вправо на те самые 44 единицы (которые видны на рисунке в окне над шкалой Яркость) из 256 общей длины диапазона. Есть и другие, более тонкие инструменты коррекции тонов (например, гамма-коррекция); с ними вы познакомитесь, выполняя лабораторную работу.
Аналогично можно контролировать и регулировать состояние контрастности.
После завершения тонгшьной коррекции, если у вас цветное изображение, наступает время более сложной и более субъективной коррекции цветов.
Специфика работы с цветом заключается в том, что изменение одного цвета обязательно отразится на других. Поэтому в основе любой цветовой коррекции лежит не настройка отдельных цветов, а настройка баланса цветов. Для этого используется цветовая модель HSB. Цветовой круг, о котором шла речь в § 15 (см. рис. 2.2 и форзац учебника), наглядно представляет взаимозависимость цветов. Каждый цвет находится напротив дополняющего его на другом конце диагонгили. Сам цвет находится между цветами (на окружности), с помощью которых получен.
Цвета, лежащие напротив друг друга, взаимно связаны. Уменьшая в рисунке содержание одного, вы увеличиваете содержание противоположного (дополняющего). Вызов окна настройки баланса цветов осуществляется командой Изображение/Коррекция/Цветовой баланс.
Рассказанное нами отражает лишь реализацию общих принципов кодирования цветной графики при создании графических информационных объектов. Реальные возможности Adobe Photoshop намного шире и позволяют создавать не только информационные объекты, но и поистине художественные образы.
Яркость/Контрастность
Яркость:
+44
ОК
“ZS“
Сброс
Контрастность:
'---------------±г
Е!
о____I i/ Предпросмотр
Рис. 3.11 Диалоговое окно изменения уровней яркости и контрастности
153
Кодирование информации. Представление информации в памяти компьютера
Гистограмма
-Канал:] Яркость
Середина: 149,13 Уровень:
Среднеквадратное отклонение: 76,83 Счет:
Медиана: 130 Процентах:
Пикселы: 4915200 Кэш уровень: 1
Рис. 3.12 Гистограмма после изменения уровня яркости
□
ок
J|BJз.п^toЖlIйЖaдWй^^^
в чем состоят преимущества цифровой фотографии перед пленочной? Что такое контраст? Что такое яркость изображения?
Для чего используется Гистограмма?
Почему при цветовой коррекции нельзя настроить ровно один цвет?
Рассмотрите еще раз рисунок 3.9. В окне Канал указано RGB. Что, на ваш взгляд, будет на экране и какой смысл имеет преобразование уровня, если в окне Канал стоит только R? А если только В?
□Г
§ 36 Компьютерные презентации
Л
Компьютерные презентации, как следует из смысла самого слова «презентация», предназначены для того, чтобы представить интересующую информацию как можно в более доступном виде. Эффективность восприятия информации возрастает, если она будет представлена в разных видах — видео, звуковой, текстовой. Такое представление информации принято называть мультимедийным (от лат. multi — много). Для создания мультимедийных до-
154
кументов имеется специальное инструментальное программное обеспечение. Мы расскажем об одном из средств создания мультимедийных продуктов — программе создания и управления электронной презентацией PowerPoint.
Нередко презентации создаются для сопровождения выступления или доклада по какому-либо вопросу. Ведь хочется, чтобы выступление было интересным, информационно насыщенным, запоминающимся. И неважно, кто будет вашим слушателем: члены строгого жюри на конференции по защите исследовательских работ, или ваши друзья по клубу, где вы рассказываете об очередном своем путешествии, или школьники более младшего класса, в котором вас попросили рассказать о чем-то, что вы хорошо знаете. Презентация, которую вы подготовите заранее, будет вашим надежным помощником.
Учитель любого школьного предмета не откажется от вашей умной презентации изучаемого материала. Это могут быть знаменитые памятники истории и некоторые доказательства теоремы Пифагора, редкие животные нашей страны или вашего родного края, история компьютерной техники, биография знаменитого писателя и т. п. Любая тема может стать основой для создания учебной презентации.
На выставке презентация может освободить вас от необходимости много раз повторять одно и то же разным посетителям. Компьютер в отличие от человека никогда не забудет сказать все нужные слова, показать все необходимые диаграммы, продемонстрировать нужные изображения. Удачная презентация способствует расширению круга партнеров. Презентацию, выполняемую компьютером автоматически, т. е. без участия человека, обычно называют слайд-фильмом.
Основным структурным элементом презентации, создаваемым в PowerPoint, является слайд. Во время демонстрации на смену одному слайду приходит другой. Работу по созданию презентации можно разбить на следующие этапы:
* подготовка: выбор темы, определение цели, круга слушателей, содержания и структуры презентации в целом и каждого слайда;
в создание слайдов: размещение объектов на слайде, выбор фона, применение эффектов, подключение звука;
в создание последовательности слайдов: определение переходов от слайда к слайду, создание меню и т. п.;
в репетиция выступления с презентацией;
« редактирование презентации: внесение изменений по результатам репетиции.
Первый этап полностью ложится на вас. А вот про второй мы сейчас расскажем.
155
Основные информационные объекты. Их создание и компьютерная обработка
Прежде всего надо выбрать макет будущего слайда. Компьютер любезно предложит вам несколько вариантов (рис. 3.13). Для начала мы советуем вам выбрать макет без разметки — ведь интересно все попробовать самому.
На поле слайда вы можете добавлять самые разнообразные объекты: это и стандартные фигуры, и надписи, и объекты из WordArt, и рисунок из ClipArt. А может быть, это будет ваш личный рисунок. Все это делается так же, как, например, в Microsoft Word.
Необходимо позаботиться и о фоне слайда. Его можно создавать самостоятельно, а можно воспользоваться Шаблонами оформления. В первом случае вы действуете через меню Формат/Фон. Во втором случае вы пользуетесь трудами художников-дизайнеров, и все слайды получаются в едином стиле. В этом случае используют меню Формат/Оформление слайда. Чтобы отменить используемый шаблон оформления, надо в окне Фон поставить галочку в поле Исключить фон образца.
Средствами PowerPoint можно заставить двигаться любой размещенный на слайде объект. В этом случае говорят, что к объекту добавлена анимация. Само слово «анимация» означает «оживление» (от англ, animal — животное). Настройка анимации осуществляется через меню Показ слайдов/Настройка анимации.
В первую очередь назначаются порядок и время анимации. Можно выбрать два режима для запуска объекта в движение: по
Создание слайда
Выберите автомакет:
ОК
Ша
-'п
сЗВЕз
Отмена
I Титульный слайд
Больше не выводить это окно
Рис. 3.13 Окно выбора макета будущего слайда
у 156
щелчку мыши и автоматически. В последнем случае надо указать время.
Среди эффектов есть визуальные — возникновение, вращение, вспышка и т. п., а есть звуковые — барабан, аплодисменты и т. п. Впрочем, звук вы можете вставить из любого звукового файла. Для этого в меню Вставка надо выбрать пункт Фильмы и звук.
Создав слайд, вы можете тут же просмотреть его, воспользовавшись кнопкой Просмотр.
Перейдем к третьему этапу. Прежде всего укажем, что в PowerPoint предусмотрено 6 способов отображения созданной презентации (табл. 3.2). Переходить от одного способа отображения к другому можно с помощью кнопок, расположенных в нижней части окна PowerPoint, или выбирая соответствующую команду в меню Вид.
Режим Сортировщик слайдов позволяет целиком увидеть содержание презентации в миниатюре. Каждый слайд можно снабдить дополнительными эффектами, например указать, каким образом слайд будет появляться на экране («наплыв вверх», «выцветание через черное» и т. п.). В режиме Сортировщик слайдов удобно перемещать, удалять, копировать и вставлять новые слайды.
Таблица 3.2
Режим отображения Назначение режима
Обычный Именно в этом режиме создаются файлы. Он содержит панели Структура, Слайд, Заметка.
Структура Отображаются только заголовки и маркированные списки слайдов, что дает возможность просматривать и редактировать сценарий презентации. Здесь нельзя увидеть рисунки и другие «украшения».
Слайд Панель слайда занимает весь экран презентации.
Заметки Каждый слайд на экране сопровождается пустой страницей ниже основного кадра. Здесь можно разместить комментарий к данной презентации.
Сортировщик слайдов Организовывает порядок следования слайдов.
Показ слайдов Показ слайдов в том виде, в каком они будут демонстрироваться на презентации.
157
Основные информац'юн.ные объекты. Их создание и компьютерная обработка
В чем преимущество мультимедийных продуктов перед другими видами информации?
Каково назначение инструментального средства PowerPoint?
Для каких целей может создаваться презентация?
Каковы основные этапы разработки электронной презентации?
Выполнив перечисленные ниже задания, подготовьте создание презентации художественного произведения, которое вы недавно прочитали.
а) Выберите произведение, презентацию которого вы намерены сделать. Продумайте, какая информация должна быть сообщена в первую очередь. Составьте план, как эта информация будет размещена на первом слайде.
б) Продумайте, как вы можете представить главных героев произведения, в каком порядке они будут появляться в вашей презентации. Составьте план, как должен выглядеть соответствующий слайд (или последовательность слайдов), какие эффекты анимации здесь были бы полезны.
в) Продумайте, какими событиями могут быть представлены основные сюжетные линии, как обрисовать взаимоотношения героев. Если вам нужны графические образы, продумайте, как они могут быть созданы.
г) Продумайте, как выразить ваше отношение к произведению.
Подготовьте создание рекламы какого-либо любимого вами продукта, например мороженого.
Выполнение этого задания предполагает распределение работы между учениками класса. Вам предлагается создать электронное учебное пособие для первоклассников «Живая азбука», и каждый участник этого проекта создает несколько слайдов.
а) Каждой букве алфавита отводится один слайд. Продумайте, какие слова и какие соответствующие им изображения животных должны иллюстрировать употребление данной буквы.
б) Продумайте структуру каждого из слайдов — она должна быть единой. Определите, как будет осуществляться навигация. Какие требования в связи с этим должны быть объявлены разработчикам слайдов?
в) Придумайте, как можно организовать проверку того, как первоклассник — пользователь вашего продукта — выучил употребление данной буквы. К примеру, можно предъявлять букву и набор изображений предметов, из которых он должен выбрать те, в названиях которых встречается данная буква. Более сложный вариант — предъявляется набор изображений предметов, в названиях которых встречается одна и та же буква; обучаемый должен указать эту букву.
J9r
Бурное развитие Интернета является самым значительным и волнующим событием в компьютерном мире после экспансии персональных компьютеров в начале 80-х гг. XX столетия. И событие это вовсе не ограничено рамками компьютерного мира — воздействие Интернета на общество намного шире. Как в Средние века изобретение Иоганном Гутенбергом печатного пресса значительно ускорило перемены в экономике, политике, культуре и общественных отношениях, так сегодня Интернет оказывает огромное воздействие на все стороны человеческого сообщества. Американский исследователь Кевин Келли в своей работе «Новые правила для новой экономики» прямо утверждает, что старая индустриально-иерархическая социальная система /^ама Смита на наших глазах превращается в совершенно новую, но вполне реальную и очень интересную систему общественного устройства. Эту социальную систему будущего называют информационносетевой или общинно-сетевой.
□Г
§ 37 Локальная компьютерная сеть
Загляните сегодня в любой крупный магазин и посмотрите, как кассиры используют базы данных магазина и банка, считывая штрих-коды товаров и проводя расчеты с покупателями по электронным кредитным карточкам. Чтобы это было возможно, все мини-компьютеры кассовых аппаратов должны быть соединены в одну сеть. Впрочем, сегодня ни одна фирма даже средних размеров не может обойтись без сетевого объединения всех своих компьютеров.
Если компьютеры, между которыми надо организовать обмен документами, находятся недалеко друг от друга, например в пределах одного класса или здания, их можно соединить, воспользовавшись либо коаксильным кабелем, похожим на телевизионный, либо специальным проводом, называемым витая пара (похож на телефонный), либо оптоволоконным кабелем. Скорость передачи по такому соединению составляет обычно от 10 до 100 Мбит/с. Самый низкий показатель имеет коаксильный кабель, а самый высокий — оптоволокно. Потребуются еще и специальные сетевые платы
159
Телекоммуникационные сети. Интернет
(называемые по-другому сетевыми адаптерами), и соответствующее программное обеспечение. Такое соединение называется локальной компьютерной сетью.
Основная цель создания локальной компьютерной сети — совместное использование информационных ресурсов и ресурсов компьютерной техники: жестких дисков, принтеров, сканеров.
С помощью локальной сети данные, помещенные в памяти одного компьютера, становятся доступными и на других компьютерах. Может ли работать, скажем, банк без компьютерной сети? Конечно, нет! Ведь сведения об операциях с клиентами банка, проводимых в разных его подразделениях, сразу же должны быть отражены в единой базе данных, иначе возникнет полная неразбериха.
В небольших по числу компьютеров локальных сетях все участники равноправны, и каждый пользователь самостоятельно решает, какие ресурсы своего компьютера сделать доступными для сетевого использования. Такие сети принято называть одноранговыми.
Однако, если компьютеров в сети уже больше 10, одноранговая сеть, как правило, оказывается неудобной и малоэффективной. Для увеличения производительности один компьютер, а иногда и больше выделяется для хранения файлов и программных приложений общего доступа всех клиентов сети. Такой компьютер называют сервером, и на нем размещают программное обеспечение, позволяющее работать в локальной сети. Нередко этот компьютер обладает значительно большими ресурсами памяти и большей производительностью, нежели рядовые компьютеры сети. На том же сервере могут исполняться различные приложения, требующие использования ресурсов, которых недостаточно на остальных компьютерах, подключенных к данному серверу.
Общая схема соединения компьютеров в сеть называется топологией сети. Топология сети может быть весьма различной. Последовательное соединение компьютеров (рис. 4.1, а) называется сетью типа «линейная шина». Если же к каждому компьютеру подведен
а)
б)
Рис. 4.1 Топология локальной сети
и 160
отдельный кабель, соединяющий его с неким центральным узлом, то говорят, что реализована сеть типа «звезда» (рис. 4.1, б).
Преимущество локальной сети типа «звезда» в том, что при выходе из строя одного кабеля остальные компьютеры останутся действующими в сети.
Топология сети может быть намного сложнее, чем два представленных здесь случая. Например, она может одновременно использовать указанные варианты в разных своих частях.
Для чего создаются локальные компьютерные сети?
Что такое топология компьютерной сети? Приведите примеры разных топологий сети.
Какую топологию локальной сети целесообразно, на ваш взгляд, использовать в компьютерном классе?
Что такое сервер? Для чего используют серверы в локальной сети?
Какие типы кабелей обычно используются при создании локальной компьютерной сети? У какого из них наивысшая скорость передачи информации?
т
§ 38 Глобальные компьютерные сети
в предыдущем параграфе мы уже упомянули про магазин, в кассах которого идет обслуживание по банковским картам. Магазинный компьютер с банковским в локальную сеть не объединишь. Выход состоит в том, что эти компьютеры подключаются к глобальным компьютерным сетям. Глобальная компьютерная сеть — это совокупность мощных круглосуточно работающих компьютеров, соединенных посредством той или иной системы связи, оснащенных программным обеспечением, позволяющим осуществлять обмен информацией между компьютерами, подключенными к этой сети. Современные глобальные компьютерные сети включают в себя сотни миллионов компьютеров. Только российский сегмент Интернета насчитывает более полумиллиона компьютеров. Компьютерные сети могут быть реализованы через телефонные или оптоволоконные кабели, радио- и даже спутниковые каналы связи.
Как ни прискорбно об этом сообщать, но Интернет стал таким же детищем военных технологий, как и сам компьютер. В ответ на запуск советского спутника президент США Д. Эйзенхауэр создал в рамках Министерства обороны США (Department of Defence, DOD) лабораторию DARPA. Первая буква D в этом сокращении.
161
Телекоммуникационные сети. Интернет
как и последняя в аббревиатуре DOD, означает «оборона», т. е. лаборатория была военная.
Итак, одной из важных дат в истории Интернета можно считать 1957 г. В 60-х гг. основные работы DARPA были как раз посвящены разработке метода соединений компьютеров друг с другом. Очень важно, что возглавлял первую исследовательскую программу, посвященную системе глобальной коммуникации, начатую DARPA 4 октября 1962 г., Дж. Ликлайдер, который опубликовал работу «Galactic Network». В ней он предсказывал возможность существования в будущем глобальной компьютерной связи между людьми, имеющими мгновенный доступ к программам и базам данных из любой точки земного шара. Его предвидение отражает современное устройство международной сети Интернет. Ликлайдер сумел убедить в реальности своей концепции группу ученых, среди которых был будущий его преемник — исследователь Массачусетского технологического института (MIT) Лоренс Робертс.
К концу 1969 г. в одну компьютерную сеть были объединены четыре исследовательских центра. Эта сеть получила название ARPANET. Буква D, как видите, исчезла.
DARPA, вдохновленная успехом создания ARPANET, приступила к разработке новой программы Internetting Project с целью изучения методов соединения различных сетей между собой.
Выдвигались следующие требования:
в универсальность концепции, не зависящей от внутреннего устройства объединяемых сетей и типов аппаратного и программного обеспечения;
в максимальная надежность связи при заведомо низком качестве коммуникаций, средств связи и оборудования;
» возможность передачи больших объемов информации.
Архитектура и принципы сети ARPANET не удовлетворяли выдвинутым требованиям, поэтому была поставлена задача разработки универсального протокола информационного обмена. Протокол информационного обмена — это набор правил, определяющий принципы обмена данными между различными компьютерными программами.
В октябре 1972 г. была проведена большая и весьма успешная демонстрация ARPANET на Международной конференции по компьютерным коммуникациям (International Computer Communication Conference, ICCC). Это был первый показ на публике новой сетевой технологии. Также в 1972 г. появилось первое «горячее» приложение — электронная почта.
В марте 1973 г. Рэй Томлинсон, движимый необходимостью создания для разработчиков ARPANET простых средств координации, написал базовые программы пересылки и чтения электронных сообщений. В июле Робертс добавил к этим программам возмож-
6 Информатика 11 кл.
162
ность выдачи списка сообщений, выборочного чтения, сохранения в файле, пересылки и подготовки ответа. С тех пор более чем на 10 лет электронная почта стала крупнейшим сетевым приложением.
Наконец, в 1974 г. Internet Network Working Group (INWG), созданная DARPA и руководимая Винтоном Серфом, разработала универсальный протокол передачи данных и объединения сетей Transmission Control Protocol/Internet Protocol (TCP/IP) — сердце Интернета.
В 1980 г. INWG под руководством Винтона Серфа объявила TCP/IP стандартом и представила план объединения существующих сетей, сформулировав основные его принципы:
® сети взаимодействуют между собой по протоколу TCP/IP;
в объединение сетей производится через специальные «шлюзы» (gateway);
» все подключаемые компьютеры используют единые методы адресации.
В 1983 г. DARPA обязала использовать на всех компьютерах ARPANET протокол TCP/IP, на базе которого Министерство обороны США разделило сеть на две части: отдельно для военных целей — MILNET и научных исследований — сеть ARPANET.
Для объединения имеющихся шести крупных компьютерных центров и поддержания глобального академического и исследовательского сообществ в 1985 г. Национальный Научный Фонд США (National Science Foundation, NSF) начал разработку программы построения межрегиональной сети NSFNET.
Но параллельно с военными и академическими исследованиями велось создание коммерческих компьютерных сетей. К разработке коммерческих стандартов локальных сетей одной из первых приступила фирма Xerox, учредив консорциум Ethernet, в который вошли также фирмы Intel и Dec. В 1980 г. консорциум выпустил документацию на сеть Ethernet. Локальные сети с успехом начали использоваться в самых различных учреждениях и компаниях.
Локальные сети буквально произвели революцию, позволив существенно увеличить не только производительность труда конторских служащих, но и качество управления в целом. Но они явно были недостаточными для крупных корпораций, в первую очередь нефтяных, имеющих отделения в разных городах и даже странах. Поэтому вполне естественным стал их интерес к разработкам DARPA и подключению своих локальных сетей фактически к общенациональной сети NSFNET. Такое подключение могло быть произведено, очевидно, только на основе TCP/IP протокола.
В сентябре 1988 г. начала работу коммерческая выставка со-местимых между собой продуктов, разработанных на основе TCP/IP. Эту дату можно считать началом новой жизни глобальной сети, подключение к которой стало доступным для любого желаю-
J i 6J
Телеко.^.муникационные сети. Интернет
щего и зависело только от стремительно уменьшающихся тарифов за такое подключение. Это привело ко второму взрывообразному росту сети Интернет, в результате изобретения технологии World Wide Web, речь о которой будет идти ниже. К этому моменту темпы роста сети Интернет показали, что регулирование вопросов подключения и финансирования не может находиться в руках одного NSF. В этом же году произошла передача региональным сетям права взимать оплату за подсоединение многочисленных частных сетей к национальной магистрали, ставшей к тому времени уже « наднациональной ».
Революционизирующее влияние Интернета на мир компьютеров и коммуникаций не имеет исторических аналогов. Изобретение телеграфа, телефона, радио и компьютера подготовило почву для происходящей ныне беспрецедентной интеграции. Интернет одновременно является и средством общемирового вещания, и механизмом распространения информации, и средой для сотрудничества и общения людей и компьютеров, охватывающей весь земной шар.
Но Интернет так и остался бы компьютерной сетью для специалистов, если бы не два поистине революционных изобретения, сделанные в области программного обеспечения.
Первым изобретением стала электронная почта, вторым — Всемирная информационная паутина. Они, во-первых, сделали Интернет предметом первой необходимости для огромного числа людей, а во-вторых, обеспечили необыкновенную легкость работы с сетевым программным обеспечением.
История WWW (World Wide Web, WWW) началась в марте 1989 г., когда Тим Бернерс-Ли из Европейской Лаборатории физики элементарных частиц предложил новый способ обмена результатами исследований и идеями между участниками коллектива ис-следователей-физиков, работавших в разных странах. Для передачи документов и установления связи предлагалось использовать просто систему гипертекста (тогда никто еще не задумывался о возможности передачи фотографических изображений, звука или видео; речь шла только о распространении текстовых документов, содержащих гиперссылки на фрагменты других таких же текстовых документов, но располагающихся на удаленных компьютерах, подключенных к глобальной сети Интернет). Сегодня World Wide Web — это совокупность огромного числа информационных материалов, связанных между собой гипертекстовыми ссылками.
Вот основные понятия, относящиеся к Всемирной информационной паутине:
WWW — множество веб-страниц, размещенных на узлах Интернета и связанных между собой гиперссылками.
Web-страница — структурная единица WWW, которая включает в себя собственно информацию (текстовую и графическую) и ссылки на другие страницы или ресурсы Интернета.
и 164
Систему гипертекстовых web-страниц, контролируемых одним человеком или одной организацией, обычно называют web-сайтом или просто сайтом (от английского site — местоположение, участок под застройку).
Программа, пересылающая web-страницы на компьютер клиента с использованием протокола http (hyper text transfer protocol — протокол передачи гипертекста), называется web-сервером. На одном компьютере могут работать несколько web-серверов, и, наоборот, один web-сервер может использовать несколько компьютеров.
В настоящее время Интернет превратился в единое информационное поле планетарных масштабов. И его воздействие на развитие цивилизации грандиозно, хотя до сих пор и не осознано в полной мере. Число пользователей составляет, по различным оценкам, от 300 до 500 млн человек, из них более 5 млн в России.
Связь компьютеров с глобальной сетью Интернет, о которой говорилось выше, очень часто осуществляется с помощью телефонной сети. Но в телефонной сети передается непрерывный, или, по-другому, аналоговый, сигнал, а в компьютере вся информация кодируется дискретно, поэтому необходимо специальное устройство, преобразующее цифровой сигнал компьютера в аналоговый и обратно. Преобразование цифрового сигнала в аналоговый называется модуляцией, обратное преобразование — демодуляцией. От сокращения этих слов произошло название устройства, осуществляющего модуляцию и демодуляцию. Такое устройство называют модемом. Современные модемы, например, типа ADSL способны передавать данные со скоростью более 1 Мбит/с. Кроме того, они не препятствуют осуществлению параллельно обычной телефонной связи. А ведь еще 10 лет назад предельная скорость передачи по телефонным сетям составляла всего лишь 56 Кбод.
Во все современные операционные системы встроено все, что необходимо для начала работы в Интернете, включая мастера для установки и настройки программного обеспечения. Но для доступа к Интернету необходимо подключение в какой-либо форме к поставщику услуг Интернета, так называемому провайдеру. Это можно осуществить двумя способами:
• непосредственно обратившись к поставщику услуг Интернета;
• подключившись к локальной сети, имеющей, в свою очередь, постоянное подключение к Интернету.
В первом случае снова возможны два варианта: постоянное подключение по специально выделенному каналу связи и сеансовое подключение по обычному телефонному каналу с использованием модема. В настоящее время большинство индивидуальных пользователей и небольших фирм прибегают именно ко второму способу. Для этого достаточно зарегистрироваться у провайдера, получив учетную запись и пароль, с помощью которых будет происходить соединение с сервером. Как правило, провайдер предо-
165
Телекоммуникационные сети. Интернет
ставляет и бесплатный электронный почтовый ящик.
Временные учетные записи и пароли содержатся и в так называемых карточках доступа к сети Интернет, продающихся в киосках. Каждая такая карточка обеспечивает строго определенное (в зависимости от тарифного плана компании) время пребывания в Интернете. Как правило, дневное время существенно дороже вечернего и ночного.
Что касается подключения к локальной сети, имеющей постоянный выход в Интернет, то в настоящее время такие локальные сети могут объединять микрорайон, отдельный дом или даже подъезд.
Что такое глобальная компьютерная сеть?
Что такое протокол информационного обмена?
Что такое Интернет?
Что называют Всемирной паутиной?
Для чего предназначен протокол http?
Что такое модуляция сигнала и демодуляция?
Для чего нужен модем?
Какова роль провайдера?
Какие существуют варианты подключения индивидуального пользователя к Интернету?
Если ваш компьютерный класс подключен к Интернету, выясните, какой из вариантов для этого используется.
ЕГ
§ 39 /^ре^цйя в Интернете
М
Как уже говорилось, ТСР/1Р-протокол был создан под руководством В. Серфа группой Internet Network Working Group (INWG). Oh предусматривал пакетный обмен информацией между компьютерами, входящими в сеть. И перед разработчиками встала проблема маршрутизации пакетов, чтобы обеспечить передачу данных на нужный компьютер. Для этого было принято решение дать каждому компьютеру уникальный четырехбайтовый номер. Его называют IP-адресом. Обычно он записывается в виде четырех чисел, представляющих значения каждого байта в десятичной форме и разделенных точками, например 128.10.2.30 — традиционная
166
точечно-десятичная форма представления адреса. Каждое из этих четырех чисел заключено в пределах от О до 255.
Система IP-адресации учитывает то обстоятельство, что Интернет — это совокупность сетей, у каждой из которых свой размах. Для обеспечения гибкости в распределении IP-адресов в зависимости от количества компьютеров в сети адреса разбиты на три класса — А, В и С. Первые биты адреса указывают класс, а остальные отведены под адрес сети и адрес компьютера в этой сети. В таблице 4.1 показано распределение битов в адресах разных классов.
Из таблицы видно, что для сетей класса А имеется всего лишь 2^ = 128 различных адресов (значит, и сетей такого класса не больше чем 128), зато компьютеров в каждой такой сети может быть 2^* = 16 777 26. А вот сетей класса С уже может быть 2^' = 2 097 152, но компьютеров в каждой из них не более 256. В таких сетях нередко используют динамическое присвоение IP-адресов — компьютеру присваивается такой адрес непосредственно при подключении его к сети, и он действует только в течение сеанса связи.
Числовая адресация удобна для машинной обработки таблиц маршрутов. Однако то, что удобно машинам, неудобно людям. Есть спорное мнение, что сама человеческая натура протестует против запоминания чисел типа 192.168.1.34 (что тем не менее не мешает нам запоминать телефонные номера типа 8-97021-56437). К тому же IP-адреса совсем не информативны. По IP-адресу невозможно понять, что это: сервер, ПК, маршрутизатор, сетевой принтер или, скажем, холодильник. Приятней работать с осмысленными именами, такими, как lseptember.ru. И уж конечно осмысленные имена незаменимы для рекламирования компании.
Поэтому в сети сначала стали использовать таблицы соответствия числовых адресов именам машин. Эти таблицы сохранились до сих пор и используются многими прикладными программами. Чисто физически они располагаются в самых обычных текстовых файлах. Структура таблицы соответствия приведена в таблице 4.2.
В стародавние времена, когда Интернет еще назывался ARPANET и Сеть состояла лишь из небольшого количества мощных многотерминальных компьютеров, каждый компьютер имел
Таблица 4. 1
Класс Распределение битов в IP-адресах
А 0 Адрес сети (7 бит) Адрес компьютера в сети (24 бита)
В 1 0 Адрес сети (14 бит) Адрес компьютера в сети (16 бит)
С 1 1 0 Адрес сети (21 бит) Адрес компьютера в сети (8 бит)
и
у I 67
Телекоммуникационные сети. Интернет
IP-адрес Имя машины
127.0.0.1 Localhost
192.204.461.32 Polyn
144.206.160.40 Apollo
такой файл (обычно /etc/hosts). Таблица 4.2 При появлении в Интернете нового компьютера информация о нем заносилась в файл hosts, затем этот файл рассылался на все другие машины.
Недостатки такой схемы начали проявляться довольно быстро: с переходом от больших машин к персональным и с ростом Интернета трафик, связанный с обновлением информации при добавлении компьютеров в Интернет, становился до неприличия большим. Кроме того, каждое имя в сети должно быть уникальным, а сделать это становилось все труднее и труднее. Поэтому к середине 80-х гг. появилась другая, более гибкая система именования — система доменных имен (Domain NameSystem, DNS).
DNS — это база данных, которая содержит информацию о компьютерах, включенных в сеть Интернет. Характер данных зависит от конкретной машины, но чаш,е всего информация включает имя машины, IP-адрес и данные для маршрутизации почты. Доменная система имен выполняет несколько задач, но основная ее работа — преобразование имен компьютеров в IP-адреса и наоборот.
В DNS вся сеть представляется в виде единого иерархического дерева. На вершине располагается корневой домен (обозначается символом «.»). Ниже находятся домены первого уровня. Поскольку Интернет развивался в первую очередь в США и за счет американских налогоплательш,иков, это вызвало некоторый крен при формировании доменов первого уровня: Интернет как бы оказался поделенным между США и всем остальным миром.
Наиболее известные домены первого уровня:
сот — коммерческие организации (главным образом, в США);
edu — учебные заведения США;
gov — правительственные учреждения США;
mil — военные учреждения США;
net — различные сетевые агентства и Internet-провайдеры; int — международные организации; org — некоммерческие учреждения; info — средства массовой информации.
Позднее, когда сеть перешагнула нгш,иональные границы США, появились национальные домены типа ик, jp, au, ch и т. п. Для СССР был выделен домен su. После 1991 г., когда республики союза стали суверенными, многие из них получили свои собственные домены: ru, by, ua, la, li и т. п. Однако Интернет не СССР, и про-
168
сто так выбросить домен su из сервера имен нельзя, на основе доменных имен строятся адреса электронной почты и доступ ко многим другим информационным ресурсам Интернета. Поэтому гораздо проще оказалось ввести новый домен к существующему, чем заменить его. Таким образом, в сети существуют организации с доменными именами, оканчивающимися на su. Мало того, некоторое время назад было принято решение возобновить регистрацию в этой области.
Доменов верхнего уровня очень немного — всего около 250. Большая часть из них — географические домены. Если бы вам захотелось зарегистрировать еще один домен верхнего уровня, то потребовалось бы для этого предоставить такие серьезные обоснования, что гораздо проще было бы организовать свое маленькое государство и для него уже получить географический домен.
Вслед за доменами верхнего уровня следуют домены, определяющие либо регионы (msk), либо организации (Iseptember). Далее идут следующие уровни иерархии, которые могут быть закреплены либо за небольшими организациями, либо за подразделениями больших организаций.
Иерархия доменных имен строится следующим образом: дерево начинается с корня, обозначаемого точкой. Затем следует старшая символьная часть имени, затем опять точка и вторая по старшинству символьная часть имени и т. д. Младшая часть имени всегда соответствует конечному узлу сети. Запись доменного имени начинается с самой младшей составляющей, а заканчивается самой старшей. Составные части доменного имени всегда отделяются друг от друга точкой. Например, в имени w2000.microsoft.com составляющая w2000 является именем одного из компьютеров в домене microsoft.com.
Разделение административной ответственности позволяет решить проблему образования уникальных имен без взаимных консультаций между организациями, отвечающими за имена одного уровня иерархии. Очевидно, что должна существовать одна организация, отвечающая за назначение имен верхнего уровня иерархии. В Интернете корневой домен управляется центром ICANN, в состав которого входит по пять представителей от каждого континента.
Процедура получения имени, например, в зоне .ru или .сот называется регистрацией домена. Конечно, каждая компания, подключающаяся к Интернету, стремится зарегистрировать как можно более естественное и легкое для запоминания имя. Так, для компании Microsoft логично зарезервировать домен microsoft.com.
Каждый домен администрируется отдельной организацией, которая обычно разбивает свой домен на поддомены и передает функции администрирования этих поддоменов другим организациям. Чтобы получить доменное имя, необходимо зарегистрироваться в какой-либо организации, которой ICANN делегировал свои полномочия по распределению имен доменов. В России такой органи-
169
Телекоммуникационные сети. Интернет
зацией является NIC.ru, которая отвечает за делегирование имен поддоменов в домене ru.
Наконец, имеется еще одно важное для Интернета понятие — URL (Uniform Resource Locator) —• универсальный указатель ресурса. Он представляет собой точное описание ресурса, включающее его местонахождение в Интернете, и имеет следующую структуру:
service://host:port/path/file.ext
(вид сервиса://имя узлагномер порта/путь/имя файла, расширение).
Например:
https://www.usu.ru/...
Сервис http означает, что мы намерены иметь дело со Всемирной паутиной; www.usu.ru — это имя того узлового компьютера, с информационными ресурсами которого мы собираемся работать; в данном случае речь идет об узловом компьютере сети WWW, обслуживающем Уральский государственный университет.
ПИ:{.Ы.1.ЫНИ1ИсМ.Ы!Ш:1 А
^ Что такое 1Р-адрес? Для чего он предназначен?
Q Объясните, почему в IP-адресе каждое из фигурирующих в нем четырех чисел заключено в диапазоне от О до 255.
Q Для каждого из приведенных ниже IP-адресов определите, к какому классу относится сеть, в которой используется данный адрес: а) 23.123.0.78; б) 144.1.245.13; в) 195.42.12.3.
Q* Может ли IP-адрес начинаться на 249?
@ Для каждого из классов А, В и С укажите диапазон, в котором может находиться первое из четырех чисел, записанное в IP-адресе любого компьютера, входящего в сеть данного класса.
Q Сколько сетей класса В может существовать? Какое максимальное число компьютеров может быть в сети этого класса?
Каждый ли компьютер, который имеет выход в глобальную сеть, обладает IP-адресом?
О Для чего служит доменное имя?
О Как устроен универсальный указатель ресурса в Интернете? Для чего он предназначен?
0 170
РГ
§ 40 Поисковые системы Интернета
в § 38 мы уже говорили, что Интернет сегодня — это почти бездонное хранилище самых разнообразных информационных объектов; текстовых, графических, звуковых, видео и т. п. Их в тысячи, а может быть, и в миллионы раз больше, чем в любой доступной вам библиотеке. Но даже в библиотеке не всегда легко найти нужную информацию. Как же осуществить это в Интернете?
Началось все в апреле 1994 г., когда Дэвид Фило и Джерри Янг из Стэндфордского университета пришли к выводу, что у каждого из них накопилось такое большое количество ссылок на самые разные информационные источники, что пора каким-то образом их упорядочить. Так родилась идея создания специализированной базы данных, которая вскоре стала использоваться тысячами пользователей для эффективного поиска информации в сети. Называется эта поисковая система Yahoo!, что расшифровывается как Yet Another Hierarchical Officious Oracle (Еще Один Иерархический Официозный Оракул). В начале следующего, 1995 г. детище Фило и Янга поместили на более мощные компьютеры Netscape, и вскоре система Yahoo! стала самым популярным и полным иерархическим предметно-ориентированным путеводителем по Всемирной информационной паутине и Интернету в целом. В Yahoo! все рассортировано по темам и категориям, вся информация разложена по полочкам так, что даже самому ленивому пользователю не составит большого труда найти искомый ресурс в необозримом пространстве сети.
Наряду с Yahoo! существуют и другие подобные системы, в том числе и русскоязычные. Здесь мы упомянем только о четырех таких системах, наиболее популярных в нашей стране.
Одним из самых известных является поисковый сервер Яндекс. Его история восходит к 1990 г., когда в компании «Аркадия», возглавляемой Аркадием Борковским и Аркадием Воложем, начались разработки поискового программного обеспечения. Сайт ЯпОех появился в Интернете в 1996 г., после того как руководством фирмы СотрТек и разработчиками системы было принято решение о дальнейшем развитии поисковых технологий, ориентированных на широкую аудиторию пользователей Интернета. Официально поисковая машина Yandex.Ru была анонсирована 23 сентября 1997 г. на выставке Softool.
Через два месяца, в ноябре 1997 г., был реализован естественно-языковой запрос. Отныне к Yandex.Ru можно обращаться просто «по-русски», задавать длинные запросы, например: «где купить компьютер», «генетически модифицированные продукты» или «коды международной телефонной связи», и получать ответы. Средняя длина запроса в Yandex.Ru сейчас 2,7 слова. В 1997 г. она составляла 1,2 слова — тогда пользователи поисковых машин были приучены к телеграфному стилю.
171
Телекоммуникационные сети. Интернет
Поисковая система Апорт! (https://www.aport.ru) начала работу с лета 1997 г. Одно из главных ее преимуществ — удачные средства составления запроса. Кроме того, эта система предлагает возможность автоматического перевода запросов с русского на английский язык и наоборот. Найденные документы упорядочиваются в зависимости от частоты употребления в них искомых терминов, глубины их расположения в тексте.
Интересно, что большинство поисковых систем делают возможным разделение задач по нескольким мощным компьютерам, что и обеспечивает очень высокую скорость обработки запросов.
Сргшнительно недавно появилась и стала уже одной из самых популярных поисковая система Google (https://www.google.ru и https://www.google.com). При обращении к ней появляется ее первая страница (рис. 4.2).
На первой странице любой поисковой системы имеется специальное окно, в которое вы записываете запрос на поиск. Сам запрос состоит из ключевых слов — они выражают то, что составляет суть разыскиваемой информации. Пусть, к примеру, вам для
Персонализированная страница I Войти
GooqIc
^ J Россия
Веб Картинки Группы Новости Ещё»
Поиск в Google
Мне повезёт!
Расширенный поиск Настройки
Языковые инструменты
0ПОИСК в Интернете О Поиск страниц на русском
Рекламные программы - Все о Google - Google.com in English Сделайте Google стратовой страницей!
©2006 Google
Рис. 4.2 Поисковая система Google
172
подготовки реферата по истории Интернета нужно найти фотографию В. Серфа. Тогда в строке поиска надо набрать слово «Серф». А еще лучше набрать два слова: «Винтон Серф». Пробел между словами большинство поисковых систем воспринимает как союз и. Если вы попробуете так поступить, то количество найденных документов будет составлять несколько тысяч. Среди них и статьи самого В. Серфа, и статьи о нем, и книги, в которых упоминается его имя (в частности, и этот учебник). Это вовсе не значит, что поисковая система сработала плохо, это вы неудачно составили запрос. Вы же хотите фотографию, но ничего об этом поисковой системе не сказали. Составив запрос: «Винтон Серф фото», вы резко увеличите шансы на успех. Правила составления запросов с союзом или весьма сильно зависят от поисковой системы; вы можете их посмотреть, обратившись к режиму Помощь.
Если вы захотите найти документы, содержащие слова «Люблю грозу в начале мая», и введете их в поле запроса, многие поисковые системы включат в результаты поиска и документы, содержащие, допустим, слова «люблю грозу в мае», «Маша любит грозу» и т.д. Поиск, при котором допускаются словоизменения, называется морфологическим. Его способны осуществлять все русскоязычные и многие зарубежные поисковые системы. Когда в поле запроса введены слова «Люблю грозу в начале мая», мы, скорее всего, хотим найти документы, содержащие все четыре слова. Однако поисковая система, представив вначале документы со всеми словами, начнет затем давать ссылки на документы, в которых есть хотя бы одно из указанных слов. Чтобы указать поисковой системе, как должны быть связаны между собой введенные пользователем ключевые слова, используются специальные операторы.
Выше мы уже упоминали о логических операторах. Они позволяют указать поисковой системе, как она должна отбирать документы, если в запросе перечислено несколько ключевых слов. Логическое И между ключевыми словами показывает, что необходимо выдать документы, содержащие все искомые слова. Логическое ИЛИ используется при необходимости поиска документов, содержащих хотя бы одно из перечисленных ключевых слов. Логическое НЕ позволяет исключить из множества документов те, в которых присутствует слово, следующее за этим оператором.
Другая часто используемая группа операторов — операторы расстояния. Они позволяют задать ограничения на удаленность вхождений ключевых слов друг от друга в тексте документа. Выделяют три оператора этой группы: оператор поиска фразы, позволяющий находить точные вхождения указанной последовательности слов; оператор, позволяющий задать расстояние в словах; оператор, позволяющий задать расстояние в предложениях. Как именно записываются операторы в запросах, определяется правилами той системы, которой вы намерены воспользоваться. Поэтому мы настоятельно советуем: прежде чем начать работать в поисковой
173
Телекоммуникационные сети. Интернет
системе, надо познакомиться с правилами составления запросов в этой системе — это сэкономит ваши силы и время.
Каждая поисковая система представляет собой комплект программ, в основе которого лежат следуюш;ие пять программ:
• Spider («паук») — программа, которая загружает в поисковую машину Web-страницы. Она работает аналогично браузеру, установленному на компьютере пользователя, но ничего не отображает ни на каком экране.
® Crawler («червяк», или «путешествуюш;ий паук») — программа, способная найти на Web-странице все ссылки на другие страницы. Задача этой программы — определить, куда дальше должен идти «паук», руководствуясь ссылками или заранее заданным списком адресов.
• Indexer (индексатор) — программа, которая «разбирает» страницу на составные части и анализирует их. При этом вычленяются и анализируются заголовки Web-страниц, заголовки документов, ссылки, текст документов, отдельно анализируется текст, выделенный полужирным шрифтом, курсивом и т.п. Результаты анализа поступают на хранение в специальную базу данных (см. сле-дуюш;ий пункт). Глубина индексации может быть разной. В частности, полные тексты документов, размеш;енных на Web-странице, в базу данных копируют далеко не все поисковые системы — некоторые ограничиваются лишь заголовками.
• Database (база данных) — хранилиш;е всех данных, которые поисковая система загружает и анализирует. Она требует огромных ресурсов как для хранения, так и для последуюш;ей обработки.
• Search Engine Results Engine (система выдачи результатов поиска) решает, какие страницы удовлетворяют запросу пользователя и в какой степени. Именно с этой частью поисковой системы обш;ается пользователь.
Первые две программы, работаюш;ие в связке, часто называют поисковым роботом.
На самом деле поисковая система, получив запрос на поиск, не отправляется в длительное путешествие по Всемирной паутине, а анализирует лишь ту информацию, которая была ею проиндексирована. С одной стороны, это позволяет резко повысить скорость обработки запроса на поиск. С другой — область поиска оказывается ограниченной внутренними ресурсами поисковой системы. Надо понимать, что эти ресурсы, во-первых, не полны — ведь ни одна поисковая машина не в состоянии загрузить в свою базу данных информацию со всех узлов Сети, а во-вторых, уже в какой-то степени устарели. Ситуация в Интернете меняется очень быстро. Если «паук» с целью обновления информации об уже когда-то проиндексированных Web-страницах «заползает» на них раз в два месяца, пользователь рискует получить в результатах запроса ложную ссылку.
и 174
Большинство поисковых систем осуществляет разделение задач по нескольким мощным компьютерам, что также повышает скорость обработки запросов.
Какие средства поиска информации имеются в WWW?
Как воспользоваться поисковой системой?
Какой поиск называется морфологическим?
Какими средствами обладают поисковые системы для более точной формулировки поискового запроса?
Каковы основные программные компоненты поисковой системы? Каково назначение каждого из них?
Может ли случиться так, что поисковая система найдет документ, который не существует? Если да, то в чем, на ваш взгляд, причина такого результата?
$41 Интернет как источник информации
Поиск нужной информации — это не только умение составить запрос по правилам используемой вами поисковой системы. К поиску информации нужно подходить как к решению любой информационной задачи. Об этапах решения информационной задачи мы рассказывали в § 11 учебника для 10 класса.
Напомним их:
в на первом этапе определяется, какую исходную информацию необходимо иметь для решения задачи и как ее получить;
в на втором этапе привлекаются знания, позволяющие связать исходную информацию с результатами и определяющие, как именно получить требуемый результат;
* на третьем этапе исходная информация извлекается и преобразуется в результирующую информацию.
Мы проиллюстрируем прохождение этих этапов на примере решения одной из возможных поисковых информационных задач. Пусть, к примеру, вам потребовалось найти информацию для того, чтобы составить сравнительную хронологическую таблицу жизни А. С. Пушкина и событий русской истории. Какую исходную информацию надо иметь? Во-первых, надо определить основные события в жизни поэта и сопоставить им временные рамки. Во-вторых, определить, что будем понимать под событиями русской истории.
175
Телекоммуникационные сети. Интернет
Можно, например, разбить их на внешнеполитические, внутриполитические и культурные. Каждый класс событий определяет свою стратегию поиска, которая подлежит дальнейшему уточнению. Впрочем, вполне возможно, что вы иначе произведете уточнение характера разыскиваемой информации, мы же только иллюстрируем, как это может происходить. Но обратите внимание: это еш;е не поиск, а только подготовка к нему.
После выполнения первого этапа начинаем выполнять второй. Как выявить основные события в жизни поэта и даты этих событий? Возможно, вы знаете, что есть соответствуюш;ий биографический справочник. Более того, вы помните его название и кем он был издан. Это параметры вашего поиска. Поиск по таким точно определенным параметрам называется адресным. Впрочем, и в этом случае лучше подстраховаться, задавая себе вопросы типа «Точно ли я знаю название?», «Как еш;е мог бы называться справочник?», «Правильно ли я указгш издательство?» и т. п.
Но обычно провести адресный поиск бывает трудно. Что же тогда выступает в роли параметров поиска? Это уже упоминавшиеся выше ключевые слова, которые содержательно характеризуют тему поиска. Применительно к рассматриваемой задаче лучше сформировать несколько наборов ключевых слов, относяш;ихся к биографии А. С. Пушкина, например «детство Пушкина», «лицейские годы Пушкина», «первые стихи Пушкина», «женитьба Пушкина» и т. п. Как вы видите, здесь нам пришлось все-таки воспользоваться определенными знаниями о Пушкине. Если же вы совсем ничего не знаете, то и ключевые слова у вас получатся, скорее всего, только такие: «биография Пушкина».
Поиск по ключевым словам называется тематическим — ведь в основу его положено ваше понимание темы поиска. При организации тематического поиска надо иметь в виду, что, чем более распространено данное слово в жизни, тем меньше оно подходит на роль ключевого. Если, к примеру, вы захотите узнать, что такое русская баня, то на запрос по ключевому слову «баня» среди первых двадцати ссылок, выданных поисковой системой, вы обнаружите не менее 8 предложений, где и как купить баню, рекомендации, как правильно париться и какие веники использовать, 6 реклам различных банных комплексов, 2 стихотворения о бане, статью «Как самому построить русскую баню», ссылку на словарь В. Даля (на пословицу о бане) и еш;е на статью с названием «Кто про что, а вшивый про баню», которая, собственно, к бане никакого отношения не имеет. А вот если вы захотите узнать, что такое «Улигеры ононских хамниган», смело пишите эти слова в запрос и через 14 секунд будете знать, что хамнигане — это одна из бурятских народностей, живуш;их на реке Онон, а улигеры — это сказания о мифических героях этого народа.
Подбирая ключевые слова, надо заботиться о том, чтобы они максимально подробно отражали смысл вашего поискового запро-
0 176
са. Не нужно забывать и о подборе синонимического ряда к ключевым словам. Ведь может оказаться, что поисковая система «не знает» ни одного из указанных вами слов, но «знает» синонимы каких-то из них. Полезно при организации поиска продумать и то, в какой форме вы хотите получить информацию — текстовой, графической, видео- и т. п.
Возможно, что к выполнению второго этапа вам придется возвращаться несколько раз, уточняя поисковый запрос.
Может случиться и так, что вы совсем не знаете, как охарактеризовать тему поиска с помощью ключевых слов. Тогда вам на помощь придут электронные словари и энциклопедии. Создав запрос «Что такое ... ?», вы получите ссылки на статьи в справочных изданиях. Одним из них является википедия — открытая электронная энциклопедия, построенная по принципу гипертекста. Из ее статей вы узнаете, с какими еще понятиями связано то понятие, смысл которого вы хотите для себя уяснить, и с помощью гиперссылок сможете познакомиться с этими родственными понятиями. Принцип открытости Википедии состоит в том, что, во-первых, она постоянно пополняется новыми сведениями, а во-вторых, постоянно уточняется информация о том, что в ней уже содержится.
Как бы точно вы ни пытались составить запрос, почти наверняка вам будут представлены документы, не удовлетворяющие вашу информационную потребность. Информация, соответствующая информационной потребности, называется релевантной. Эффективность поиска обычно оценивают по двум параметрам — полноте поиска и точности поиска.
Полнота поиска — это отношение числа выданных релевантных документов к общему числу релевантных документов, имеющихся в распоряжении поисковой системы. В идеале это число должно было бы равняться 1. На практике такое почти никогда не достигается (как и положено любому идеалу). В реальных поисковых системах коэффициент полноты поиска может достигать значений 0,7—0,9.
Точность поиска — это отношение числа выданных релевантных документов к общему числу документов, выданных системой по данному запросу. Значение этого параметра колеблется от 0,1 до 1. Как вы понимаете, здесь многое зависит от того, насколько хорошо был составлен запрос пользователем.
Чем адресный поиск отличается от тематического?
Составьте запросы, с помощью которых, по вашему мнению, можно получить следующую информацию: а) Когда появилась IBM PC?
177
Телекоммуникационные сети. Интернет
б) Кто является создателем системы Google?
в) Что означает слово «блоггер» и откуда оно, вообще, взялось?
г) Кто и когда изобрел шариковую авторучку?
д) Был ли известный ученый-физиолог И.П. Павлов атеистом?
е) Что изображено на гербе МГУ им. М.В. Ломоносова?
Что такое википедия? Почему ее называют открытой энциклопедией? Какая информация называется релевантной?
Сформулируйте, какое качество выполненного поиска характеризуется параметром «точность», а какое параметром «полнота».
5Г
§ 42 Сервисы интернета
Мы уже довольно подробно обсудили преимущества Интернета как бездонного хранилища информации. Но исторически первым сервисом, предоставлявшимся еще сетью ARPANET, была электронная почта. Она позволяет обмениваться текстовыми сообщениями с любым пользователем, имеющим выход в глобальную компьютерную сеть и зарегистрированным на каком-либо почтовом сервере. При регистрации абонент получает электронный почтовый адрес, имя пользователя для входа в сеть — так называемый login — и пароль, позволяющий избежать несанкционированного доступа посторонних лиц к вашей почте.
Адрес в электронной почте образован из доменных имен, которые стоят после символа @. Например: Billt@tenet.edu, или Shaynes@monroe.lib.mi.us, или 2170@dialup.mplik.ru. Слева от значка @, как правило, указывается идентификатор конечного пользователя, т. е. присвоенный вам позывной на том сервере, где вы имеете электронный почтовый ящик.
Преимущества электронной почты по сравнению с обычной весьма значительны. Она позволяет:
* посылать сообщения сразу нескольким абонентам;
* содержать не только собственно текст письма, но и файловые вложения с графикой, звуком, программным обеспечением и т. д.;
® пересылать полученные сообщения другим адресатам;
* использовать автоответчик, который будет уведомлять отправившего вам письмо, что оно получено.
Это далеко не все, что умеют делать современные программы почтового сервиса. Одной из таких программ является, например. Outlook Express, которая входит в состав Microsoft Internet Explorer. Впрочем, в последнее время все большее распространение в работе с электронной почтой получают Web-технологии. Появились Web-сайты, которые предлагают всем желающим зарегистрировать бесплатный почтовый ящик.
!78
Надеемся, что вы адекватно оценили Интернет как информационное хранилище и средство коммуникации с любыми уголками нашей планеты. Но информация информации рознь, и ваш интерес к ней тоже может быть весьма различным. Одно дело — просмотреть новости в той или иной газете, и совсем другое — изучить большую научную статью. Для такого изучения необходимо время, и возвращаться к ее тексту, возможно, потребуется не один раз. Гораздо эффективнее получить нужную информацию к себе на компьютер в виде соответствующего файла. Кроме того, Интернет наполнен не только текстовой, звуковой или видеоинформацией, но в нем имеется немало самого разнообразного программного обеспечения, распространяемого как солидными программистскими фирмами, так и просто программистами-любителями. Получить файлы по сети позволяет ftp-сервис (от File Transfer Protocol — протокол передачи файлов). Именно он предоставляет доступ к файловым системам и выполняет передачу файлов в сеть (например, при публикации собственного Web-сайта). Одним из распространенных видов ftp-серверов является анонимный ftp-сервер. На таком сервере вы используете в качестве своего имени слово anonymous, а в качестве пароля свой e-mail. Если же вы хотите установить соединение с компьютером, не предоставляющим анонимного сервиса, вы должны иметь право доступа к системе, т. е. иметь собственное имя пользователя и пароль.
Для работы с ftp-серверами можно, как обычно, воспользоваться браузером. Только в начале адреса надо написать ftp://, а затем URL нужного вам ресурса. Удобнее, однако, для работы с большими по объему файлами использовать специализированные программы, которые называются менеджерами загрузки файлов (например, FlashGet, GoIZilla и др.). Они разбивают файловый архив на части и загружают эти части одновременно, что уменьшает время перекачивания файла на ваш компьютер, позволяют продолжить загрузку файла после обрыва соединения с сервером и выполняют ряд других работ, облегчающих жизнь пользователю.
Но польза от ftp-сервиса была бы не так значительна, если бы для получения информации пришлось бы просматривать все имеющиеся в сети анонимные серверы. Интернет и здесь идет навстречу пользователю. Для этого существуют ИПС, с помощью которых можно проводить поиск информации, расположенной на анонимных ftp-серверах. Системы, поддерживающие этот вид услуг, регулярно собирают с таких серверов информацию о содержащихся на них файлах. К таким системам относится, например, ИПС Archie.
Перестроив на электронный манер почтовую связь, разработчики глобальных сетей не успокоились. Получать письма приятно, но еще приятнее диалог, когда на каждый твой вопрос или суждение тут же реагирует собеседник. Простейший вариант такого общения — письменное сообщение: ты строчку, тебе в ответ строчку, снова ты и т. д. Есть сервис Интернета, который позволяет таким
и 179
Телекоммуникационные сети. Интернет
образом общаться на различные темы. Сокращенно его называют IRC-сервис (от Internet Relay Chat; напомним, что chat в переводе означает «разговор», «беседа», «болтовня»). Он используется для общения. Если к компьютеру подключен микрофон и наушники, то общение станет не только письменным, но и звуковым. А если еще подключена и веб-камера, то ваш собеседник увидит вас на экране своего компьютера.
Для организации такого общения необходима специальная программа. Ею может быть программа NetMeeting, входящая в состав Internet Explorer. После загрузки этой программы в поле Сервер вы можете выбрать один из серверов, на котором в данный момент происходит общение. После того как сервер вами выбран, на экране появится список участников общения и сведения о них: имя, фамилия, адрес электронной почты и др. В строчках некоторых участников имеются значки микрофона и видеокамеры. В этом случае у вас есть возможность установить с этим собеседником голосовую и видеосвязь.
В последнее время большой популярностью пользуется интерактивное общение с помощью сервиса ICQ. Каждый участник такого общения имеет уникальный идентифицирующий его номер, который он получает при регистрации. Чтобы стать участником ICQ, достаточно скачать эту программу, например, с сервера www.free-ware.ru и во время установки зарегистрироваться. После запуска программы пользователь может начать общение с любым подключенным в этот момент зарегистрированным членом этого сообщества, которое сейчас насчитывает более 150 млн человек. По меткому выражению одного блоггера, Интернет заполнен болтающими подростками. Мог ли все это представить себе президент Эйзенхауэр, когда отдавал распоряжение об организации DARPA?
Появившись в сравнительно недавнее время, система ICQ содержит в себе многие другие сервисы Интернета: электронную почту, чаты, интернет-телефонию (о которой будет рассказано в следующем параграфе), передачу файлов и т.д.
Личный дневник. В самом названии заложено общение с самим собой, изложение собственного восприятия происходящих вокруг событий и тех эмоциональных переживаний, которые они вызвали. Раньше достоянием общества такие дневники становились как мемуарная литература знаменитых людей. Интернет изменил и эту сторону жизни. Теперь каждый желающий может вести такой дневник в Интернете, причем не только на домашних страницах собственного сайта, который известен только узкому кругу. Живой Журнал (Live Journal; адрес русскоязычного сайта — www.livejournal.ru) — сайт, предназначенный для ведения частных дневников. У этого информационного ресурса 6 млн пользователей; Россия стоит на 3-м месте после США и Австралии. В Живом Журнале можно делать свои записи, комментировать дневники других, вставлять фотографии и иллюстрации, делать гиперссылки, зада-
180
вать настроение (словесно или смайликом). В Живом Журнале можно искать друзей по интересам. Особенно много объединений, посвященных книгам или образованных «вокруг» книг. Размышления о книгах есть во многих интернет-дневниках. Особую атмосферу интернет-разговоров о книгах создает отсутствие какой бы то ни было цензуры и усиленное сдерживание рекламных атак со стороны книжного бизнеса. Вот несколько адресов таких книжных сообществ:
https://community. livej ournal .com/knigi / https://community. livej ournal .com/4itaem_za_vas / https://community. livej ournal.com/f antasy_ru / https://community, livej ournal. com/lovebooks / https://community, livej ournal. com/booktalk_spb /
Еще более широкое общение предоставляют так называемые социальные сети. В нашей стране наиболее популярными являются vkontakte.ru и odnoklassniki.ru. В этих сетях вы можете найти и тех, с кем давно утеряна связь, и тех, кто сейчас находится в тесном с вами общении, но сегодня вас разделяет расстояние.
Для серьезного общения в Интернете существует система телеконференций UseNet, которая позволяет тем, кто к ней обращается, участвовать в различных дискуссионных группах. Телеконференции тоже родились не на пустом месте — они представляют собой сетевой вариант так называемых досок объявлений (BBS — от Bulletin Board System), изначально располагавшихся не на серверах, а на компьютерах с модемным доступом.
Тому, кто еще не участвовал в телеконференции, но желает этого, лучше всего начать с просмотра тех телеконференций, которые имеют в своем имени слово newuser (новый пользователь). Например, с телеконференции news.announce.newusers.
Прежде чем задавать вопросы, просмотрите FAQ-файлы (от Frequently Ask Questions — часто задаваемые вопросы) или посмотрите телеконференцию news.answers.
Система имен телеконференций, как обычно, построена по иерархическому принципу. Первый домен указывает общую тематику конференции.
Наиболее распространены следующие основные категории:
biz Бизнес
comp Компьютеры
news Новости общего характера
гес Развлечения (хобби и искусство)
sci Наука
SOC Социальные темы
talk С ориентацией на дискуссию
misk Темы, не подходящие под вышеуказанные категории
alt Альтернативные
181
Телекоммуникационные сети. Интернет
Телеконференции расширяют возможности человека удовлетворить свои познавательные и культурные потребности. Но Интернет все активнее вторгается в коммерческую сферу. С помош;ью Интернета проходят деловые встречи и совеш;ания, заключаются сделки, проводятся аукционы. В течение одного дня, не выходя из офиса (а то и просто из домашнего кабинета), руководитель фирмы может провести переговоры с фирмами-компаньонами, находя-ш;имися за десятки, сотни и даже тысячи километров. Это в несколько раз повышает возможности осуш;ествления деловой активности, снижает непроизводственные расходы, экономит силы людей.
Но и для рядового пользователя Интернет сегодня предоставляет значительное количество коммерческих услуг. Все большее распространение получают интернет-магазины, для которых процесс обш;ения с покупателем происходит не в специально оборудованном помеш;ении с витринами и стеллажами, на которых располагается товар, со значительным количеством персонала, продавцов и кассиров. В интернет-магазине товар представлен виртуально. На сайте вы найдете фотографии, видеоролик и описание интересуюш;ей вас веш;и, продукта или услуги (например, туристической поездки). Вы можете сделать заказ, и выбранный вами товар будет вам доставлен. Нередко цены в интернет-магазине оказываются ниже, чем в магазине на соседней улице, ведь торгую-ш;ей организации не нужно арендовать помеш;ение и содержать столь значительный персонал. В нашей стране, весьма недавно вступившей в стихию свободных рыночных отношений, эта форма торговли пока не завоевала такого доверия, как в странах с устоявшейся рыночной экономикой.
Сегодня многие имеют мобильные телефоны. Оперативная, чаш;е говорят мобильная, телефонная связь не только удобна, но часто в нашей насыш;енной событиями жизни просто необходима. Но можно установить мобильную связь не только между двумя телефонами, но и между телефоном и компьютером. Прежде всего речь идет о возможности отправлять с телефона на компьютер и обратно так называемые SMS (сокраш;ение от Short Message Service — доставка коротких сообш;ений). Для беспроводного доступа с мобильных телефонов к ресурсам Интернета используется специальный протокол WAP (от Wireless Application Protocol — протокол беспроволочного применения). Отметим, что этот протокол поддерживает связь не с каким-то конкретным компьютером, а с сетью Интернет и его сервисами в целом. Более точно связь поддерживается с так называемыми WAP-сайтами, которые располагаются на Web-серверах и представлены в специальном формате WML (от Wireless Markup Language). Это специальный язык разметки, ориентированный на возможности мобильного телефона — его графику, маленький экран и небольшую память.
[•: 182
На WAP-сайтах вы найдете новости политики, экономики, спорта, прогноз погоды и многое другое. Вы можете отправить электронную почту и поучаствовать в WAP-чате. Тем самым вы оказываетесь в мире Интернета, не имея под рукой компьютер.
Мобильный телефон может быть подключен к компьютеру напрямую. В этом случае телефон превращается в одно из внешних устройств, осуществляющих, в частности, полномасштабную связь компьютера с Интернетом (без модема или других устройств выхода в глобальную сеть). Для такой работы используется технология GPRS — General Packet Radio Service (мы думаем, что смысл этих слов вам ясен и без нашего перевода). Скорость передачи данных в технологии GPRS составляет 171,2 Кбит/с, что почти в 12 раз больше скорости передачи данных в мобильных телефонных сетях стандарта GSM — 9,6 Кбит/с.
Жизнь человека в обществе невозможна без информации о происходящих в нем экономических и политических процессах, без приобщения к культурным событиям своей страны. Еще полвека назад потребность в этой информации удовлетворяли газеты, журналы, радио, телевидение. Все эти источники существуют и сейчас. Но теперь Интернет предоставляет возможность обратиться практически к любому из них в виде интернет-версии. Нередко в них имеются гиперссылки на другие источники, так что, пользуясь такой версией, каждый из вас получает возможность самостоятельно выстроить маршрут для получения разносторонней информации по заинтересовавшему вас вопросу. Ведь глубина освещения вопроса и ракурс его рассмотрения могут весьма отличаться в разных изданиях. Отметим также, что все современные поисковые системы включают в набор своих основных сервисов группу Новости. К примеру, в 2002 г. разработчиками поисковой системы Google была создана специальная служба Google News, которая регулярно и оперативно собирает информацию с разнообразных 4500 сайтов.
Сегодня широкое распространение получила так называемая технология передачи потокового звука и видео. Наиболее используемыми являются технологии RealAudio и RealVideo компании Progressive Networks, а также Windows Media Technology 7 (WMT7) компании Microsoft. С помощью этой технологии в буфер компьютера передаются по частям звуковые и видеофайлы, что позволяет использовать даже модемную связь. Правда, снижение скорости передачи по каналу может приводить к временному пропаданию звука или пропуску кадров. Прослушивание и просмотр таких файлов осуществляются с помощью специальных программ, например RealPlayer или Windows Media Player. Просмотр и прослушивание передач можно осуществлять в фоновом режиме, работая в то же время с другими приложениями. Одним из распространенных вариантов применения этой технологии стала непрерывная трансляция с видеокамер LiveCam, установленных на улицах городов, в музеях, заповедниках и т. д.
183
Телекоммуникационные сети. Интернет
В настоящее время достаточно много радио- и телевизионных станций осуществляют вещание через Интернет, используя потоковую технологию. Более того, некоторые компании предлагают самому пользователю сформировать из предлагаемого меню индивидуальную программу передач на его персональный компьютер, так что слушать новости и смотреть любимые фильмы вы сможете именно тогда, когда для вас это будет наиболее удобно.
Возможности Интернета уже сегодня превышают возможность рассказать обо всех них в этой книге. В следующем параграфе мы несколько подробнее расскажем только об одной из них — IP-телефонии.
Почему Интернет можно назвать бездонным хранилищем информации? Как устроен адрес электронной почты?
В чем суть ftp-сервиса?
Как узнать, имеется ли на каком-нибудь ftp-сервере нужная вам информация?
Какие возможности предоставляет ICQ-сервис?
Для чего предназначены телеконференции? Как стать их участником?
Для чего используется протокол WAP?
Чем применение технологии GPRS отличается от WAP?
Какие преимущества имеют интернет-издания по сравнению с обычными?
Какие выгоды дает применение интернет-технологий в бизнесе?
Подготовьте сообщение (или компьютерную презентацию) об использовании интернет-технологий в коммерческой деятельности.
§43 Интернет-телефония
Идея использования телефонной линии для связи двух компьютеров чрезвычайно стара. С помощью модемов она приспособила изобретение столетней давности к современному компьютеризированному миру. Международный звонок для соединения двух компьютеров и передачи сообщения весьма разорительная операция. Именно поэтому и были придуманы серверы, соединенные друг с другом высокоскоростными линиями связи.
184
Связь с сервером, находящимся в вашем городе, — вещь не очень дорогостоящая. Это только плата за минуты пребывания в Интернете.
Казалось бы, использовать телефонные линии для того, чтобы соединить компьютеры для использования их как телефоны, немного нелогично. Но это кажется таковым только до тех пор, пока вы не сравните тарифы на Интернет с тарифами на междугородные, а тем более международные переговоры. Можете проверить, что разница весьма значительна.
Разумеется, для того чтобы поговорить с вашим другом в Австралии, необходимо войти в Интернет со скоростью не менее 12 Кбод и одновременно запустить на вашем компьютере специальную программу. Если скорость будет недостаточной, то вряд ли разговор доставит вам удовольствие.
В марте 1996 г. было объявлено о совместной программе VocalTec и крупнейшего производителя оборудования для компьютерной телефонии — корпорации Dialogic. Цель программы — создание программно-аппаратного комплекса для интернет-телефонии с возможностью использования обычного телефона. Проект получил название Internet Telephony Gateway.
В результате был выпущен в коммерческую продажу программно-аппаратный комплекс VocalTec Telephony Gateway (VTG), который в своей работе использует голосовые платы Dialogic в качестве интерфейса с обычными телефонными линиями. При этом, учитывая, что сами голосовые платы многоканальные, одна система VTG может поддерживать несколько телефонных разговоров через Интернет, проходящих одновременно и независимо друг от друга.
VTG также решает еще одну проблему интернет-телефонии — адресацию. Раньше, чтобы позвонить удаленному пользователю, нужно было знать его 1Р-адрес. Теперь же, чтобы вызвать удаленного пользователя, нужно знать только номер телефона пользователя, а все остальное VTG возьмет на себя.
Как работает VTG?
• VTG, находящийся на городском сервере вызывающего абонента, соединен с телефонной сетью.
• VTG как компонент серверного оборудования соединен с Интернетом и пользуется высокоскоростным каналом. Это дает возможность быстро связаться с любым сервером сети.
• VTG принимает стандартный телефонный вызов, оцифровывает и существенно сжимает речь абонента (используя при этом возможности голосовой платы Dialogic), разбивает полученный файл на пакеты для Интернета и отправляет их, используя ТСР/1Р-протокол, к адресату.
• VTG, находящийся в районе вызываемого абонента, проделывает обратную операцию для пакетов, приходящих из сети, и выдает их в местную телефонную линию.
185
Телекоммуникационные сети. Интернет
о Операции передачи голоса (исходящий голосовой поток и поток, идущий к телефонной сети) происходят одновременно, что позволяет вести нормальный двусторонний диалог.
Фактически VTG многократно увеличивает эффективность использования линии связи, избегая монопольного резервирования канала при прямом телефонном разговоре. Вспомните, во сколько раз увеличилась пропускная способность ARPANET при переходе на пакетную обработку. Примерно то же самое происходит и при использовании интернет-телефонии, что и объясняет ее относительную дешевизну. Мы говорим «относительную» потому, что стоимость минуты разговора уменьшается отнюдь не на порядок, как это можно было бы ожидать при десятикратном увеличении пропускной способности линии за счет пакетной передачи предварительно сжатых данных.
Мы не предлагаем к этому параграфу ни вопросов, ни заданий. Надеемся, что прочитать о рассказанных возможностях Интернета вам было просто интересно.
§44
Этика Интернета. Безопасность в Интернете
М
Живя в любом обществе, человек подчиняется писаным и неписаным законам этого общества. Пока круг общения невелик, такие законы легко познаются и к ним легко привыкнуть. Но вот вы вошли в Интернет — и ваше общение распространилось на весь мир.
Поскольку Интернет — это объединение самых разных глобальных сетей, то каждая из этих сетей имеет свои собственные правила поведения и обычаи, а незнание закона, как известно, не освобождает от ответственности.
Вопрос, что дозволено в Интернете, весьма непростой. На Интернет распространяется действие международных законов, но в то же время это и поле действия национальных законов, которые непрерывно изменяются. Например, посредством Интернета можно передавать информацию через любые государственные границы. Но при передаче чего бы то ни было через государственные границы начинают действовать экспортные законы, которые на разных территориях могут сильно различаться. В частности, эти законы, как правило, требуют лицензии на любой экспорт.
Что касается Интернета, то экспортную лицензию можно отнести к категории «общая лицензия», которая разрешает вывозить все, что не запрещено явно. Так что все, что мы узнаем на телеконференции или передаем по Всемирной сети и на что не наложены ограничения из соображений безопасности, подпадает под об-
186
щую лицензию. Правда, разные государства по-разному трактуют понятие «национальная информационная безопасность».
При пересылке программного обеспечения необходимо считаться с интеллектуальной собственностью и лицензионными ограничениями. Перед тем как получить что-либо по сети, необходимо знать, кто имеет права на это нечто. Внимательно смотрите, к какой категории относится программный продукт, свободного ли он распространения (free). А перед тем как высылать не свой продукт, убедитесь, что вы имеете на то разрешение.
Немало правовых аспектов, связанных с Интернетом, еш;е предстоит решить обществу. Законы об электронных коммуникациях, публикациях, платежах, защите данных просто не успевают за прогрессом информационных технологий, и перед государствами стоит непростая задача создания грамотных законов, не нарушающих прав человека.
Что касается этики, то Интернет — общество теоретически очень этичное. Даже имеется соответствующая декларация сетевого сообщества (Материалы интернет-сообщества RFC 1087).
Вот только два его принципа:
в проявление индивидуальности уважается и поощряется;
в сеть следует защищать.
В обществе каждый может претендовать на личную свободу, но в то же время должен идти на компромисс с интересами общины. Аналогична ситуация и в сетевом сообществе, где возможно создание самых необычных сообществ и групп. И люди свободны действовать так, как им нравится. Гонения за взгляды и вкусы строго воспрещены.
Но Интернет, предоставляя почти неограниченные возможности для общения людей, весьма слабо защищен от неэтичного поведения. К себе в дом вы вряд ли пустите любого незнакомца с улицы. А размещая свои ресурсы в Интернете, вы открываете дверь для каждого. Надо помнить об этом, когда на своих страницах вы указываете свой электронный адрес. Будьте тогда готовы, что на вас может хлынуть потоком реклама назойливых продавцов, неприятные вам шутки анонимных шутников и т. п. Все это вы должны учитывать, когда включаете свой компьютер в глобальную сеть. Уметь защищаться — это ваша забота. Например, можно шифровать свои сообщения — такой сервис имеется сейчас для связи по электронной почте.
Общение в Интернете может привести и к весьма неприятным последствиям для вашего компьютера. Угроза безопасности компьютерной системы — это потенциально возможное происшествие, которое может оказать нежелательное воздействие на саму систему, а также на информацию, хранящуюся в ней.
Уязвимость компьютерной системы — это некоторая ее характеристика, которая делает возможным возникновение угрозы безопасности.
187
Телекоммуникационнь!е сети. Интернет
Атака на компьютерную систему — это действие, предпринятое злоумышленником, которое заключается в поиске и использовании той или иной уязвимости компьютерной системы.
В последние несколько лет в связи с бурным развитием WWW значительно увеличилось и число атак через Web. В целом все типы атак через Web можно разделить на две большие группы: атака на клиента и атака на сервер.
Перечислим виды атак, под которые может попасть компьютерная система пользователя:
S удаленное проникновение в компьютер: программы, которые полз^ают неавторизованный доступ к другому компьютеру через Интернет (или локальную сеть);
в локальное проникновение в компьютер: программы, которые получают неавторизованный доступ к компьютеру, на котором они работают;
в удаленное блокирование компьютера: программы, которые через Интернет (или сеть) блокируют работу всего удаленного компьютера или отдельной программы на нем;
о локальное блокирование компьютера: программы, блоки-руюш;ие работу компьютера, на котором они работают;
в вскрыватели паролей: программы, которые обнаруживают легко угадываемые пароли в зашифрованных файлах паролей;
® сетевые анализаторы (sniffers): программы, которые слушают сетевой трафик; часто в них имеются возможности автоматического выделения имен пользователей, паролей и номеров кредитных карт из трафика.
В своем развитии браузеры ушли очень далеко от первоначальных версий, предназначенных лишь для просмотра гипертекста. Функциональность браузеров постоянно увеличивается, сейчас это уже полноценный компонент операционной системы. Параллельно с этим возникают и многочисленные проблемы с безопасностью используемых технологий, таких, как подключаемые модули (plugins), элементы ActiveX, приложения Java, средства подготовки сценариев JavaScript, VBScript, PerlScript, Dynamic HTML.
Из-за поддержки этих технологий не только браузерами, но и почтовыми клиентами, а также из-за наличия в них ошибок в последние годы появилось большое количество почтовых вирусов, а также вирусов, заражающих html-файлы (реализованные на VBScript с использованием ActiveX-объектов). Весьма распространены программы, внедряющиеся в систему и сообщающие злоумышленнику конфиденциальную информацию (троянцы). Чаще всего это сетевые реквизиты (учетная запись и пароль) для удаленного соединения. Существуют программы, позволяющие несанкционированно проникнуть в компьютер, подключенный к Интернету. Одна из таких — BackOrifice 2000.
й 188
У обычного пользователя не так уж и много средств для защиты в Интернете, но они весьма действенные.
1. Никогда не следует вскрывать какие бы то ни было присоединенные файлы в почтовом отправлении, если адресат вам неизвестен или внушает сомнение.
2. Периодически следует проверять систему антивирусными программами, а также обновлять саму антивирусную систему.
3. Полезно использовать брандмауэр, который служит «экраном» между глобальной сетью и подключенными к ней компьютерами пользователя. Брандмауэр позволяет по заданным признакам фильтровать информацию, поступающую из сети. Отметим, что операционная система Windows ХР содержит встроенный брандмауэр.
4. При навигации по Интернету ни в коем случае не следует игнорировать предупреждения браузера о том, что вы переходите в опасную зону. В этом случае он требует от вас подтверждения дальнейшего продвижения (в частности, такое подтверждение требуется при просмотре на сервере провайдера статистики собственных соединений и состояния счета). Если такое предупреждение получено в незнакомой области Интернета, стоит отказаться от дальнейшего передвижения в этом направлении.
5. Не игнорируйте предупреждения о наличии в электронном документе макроопределений. Лучше отказаться от их загрузки, а если вдруг выяснится, что в обычном документе Microsoft Word их и в принципе быть не может, — это явный признак заражения документа компьютерным вирусом.
Подробнее о компьютерных вирусах и защите информации в целом мы поговорим в § 46.
ф В чем вы видите правовые проблемы в использовании Интернета?
@ В чем может состоять угроза безопасности компьютерной системы при работе в глобальных телекоммуникационных сетях?
@ Как понимается уязвимость компьютерной системы?
^ Что такое атака на компьютерную систему?
@ Каким видам атак может подвергнуться компьютер пользователя, подключенный к глобальной сети?
@ Верно ли, что пользователю Интернета угрожают только вирусы?
189
□Г
§45
Телекоммуникационные сети. Интернет
Информационная безопасность и защита интересов субъектов информационных отношений____________________________________ц
Любая информационная система нужна для того, чтобы предоставлять пользователям тот или иной набор услуг. Оценкой эффективности работы информационной системы может служить уровень доступности ее сервисов, а для отдельного пользователя мерой эффективности служит время, за которое будет получен ответ на его запрос. Наиболее распространенной угрозой информационной безопасности информационных систем является блокирование их узлов доступа.
В историю функционирования популярных интернет-серверов Yahoo, Buy, Amazon черными днями войдут 7—9 февраля 2000 года, когда они были выведены из строя хакерской атакой в виде огромного потока запросов к этим серверам. Например, поток запросов на сервер Buy в 24 раза превысил средние показатели и в 8 раз максимально допустимую нагрузку. По разным оценкам, ущерб, нанесенный за три часа простоя сервера, составил 6 млрд долл. США.
Под информационной безопасностью понимают защищенность информации и поддерживающей инфраструктуры информационной системы от случайных или преднамеренных воздействий естественного или искусственного характера, которые могут нанести ущерб субъектам информационных отношений, имеющих место в рамках данной информационной системы. Субъектами информационных отношений являются владельцы и пользователи информации, включенные в единую систему информационного взаимодействия. К примеру, субъектами информационных отношений являются банковские учреждения и их клиенты — жители города.
Спектр интересов субъектов информационного взаимодействия включает следующие категории:
• доступность информации;
• целостность информации;
• конфиденциальность информации.
Доступность — это возможность получения необходимой информационной услуги в течение приемлемого времени.
Целостность — это однозначность и полнота информации, ее защищенность от разрушения и несанкционированного изменения.
Конфиденциальность — это защита от несанкционированного доступа к информации.
Окинавская Хартия глобального информационного общества провозглашает доступность приоритетной категорией, поскольку
у 190
«суть стимулируемой информационно-коммуникационными технологиями экономической и социальной трансформации заключается в их способности содействовать людям, обществу в использовании знаний и идей. Они также дают возможность частным лицам, фирмам и сообществам, занимающимся предпринимательской деятельностью, более эффективно и творчески решать экономические и социальные проблемы». Это, однако, не означает, что можно ослабить внимание к целостности и конфиденциальности.
Что понимают под информационной безопасностью информационной системы?
Какая категория интересов субъектов информационных отношений была нарушена в результате хакерской атаки на серверы Buy 7 мая 2000 года?
а) Почему доступность информации для субъектов информационных отношений способствует предпринимательской деятельности?
б) Какую роль, по вашему мнению, играет целостность информации в успешном развитии предпринимательской деятельности?
в) Какую роль играет конфиденциальность информации в успешном развитии предпринимательской деятельности?
В чем, на ваш взгляд, проявляются доступность, целостность и конфиденциальность информационного взаимодействия между банком и его клиентами?
В чем, на ваш взгляд, может состоять неприемлемый ущерб при нарушении: а) доступности; б) целостности; в) конфиденциальности?
O'
§ 46 Защита инфорршции
J3
Мы начнем с того, что процитируем Федеральный закон «Об информации, информатизации и защите информации», принятый Государственной Думой РФ 26 февраля 1995 года. В статье 20 этого Закона сказано, что «целями защиты являются:
• предотвращение утечки, хищения, утраты, искажения, подделки информации;
в предотвращение несанкционированных действий по уничтожению, модификации, искажению, копированию, блокированию информации; предотвращение других форм незаконного вмешательства в информационные ресурсы и информационные системы...».
i
191
Гелекоммуникационкые сети. Интернет
Данная цитата показывает, насколько широко понимается защита информации. Но чтобы говорить о защите, надо прежде всего сказать, каким атакам может подвергнуться информация, хранящаяся в компьютере или в компьютерной сети.
Об одном средстве атаки мы упоминали в § 44 — компьютерный вирус. В 2002 году было зарегистрировано 65 000 вирусных атак. Основная их доля пришлась на узлы компьютерных телекоммуникаций, принадлежащих США, Великобритании и Германии (табл. 4.3).
Таблица 4.3
№ п/п Государство Количество компьютерных атак
1 США 32 434
2 Бразилия 7294
3 Великобритания 5589
4 Германия 5301
5 Италия 3682
6 Франция 2693
7 Канада 2642
8 Дания 2061
9 Австралия 1506
10 Южная Корея 1320
Компьютерным вирусом называют программу, способную к самовоспроизведению (возможно, в измененном виде) и производящую несанкционированные пользователем изменения в информации, хранящейся в компьютере. Компьютерный вирус, каким бы он ни был, фактически ведет к уничтожению информации, имеющейся в компьютере. Даже самый простенький вирус, всего лишь нагло размножающийся при каждом обращении процессора к винчестеру, способен парализовать работу, заполнив всю память, а избавиться от него без специальных программ можно, только переформатировав винчестер.
Проявлять себя компьютерный вирус может по-разному. Например, это может выглядеть как нарушение работы операционной системы: вы хотите скопировать файл, а вместо этого копируется
у 192
какой-нибудь его небольшой фрагмент, на экране вдруг начинают сыпаться буквы, информация в том или ином файле становится недоступной и т. п. Обычно так ведут себя так называемые перезаписывающиеся вирусы. Вирусы этого типа записывают себя вместо кода программы, не изменяя имени исполняемого файла. Поэтому при запуске программы выполняется код вируса, а не исходная программа.
Другая разновидность вируса — так называемые компаньон-вирусы. Они тоже создают свою копию на месте заражаемой программы, но не уничтожают оригинальный файл, а переименовывают его или перемещают. При запуске программы сначала выполняется код вируса, а затем управление передается исходной программе.
Вирусы, которые называются файловыми червями, нередко создают собственные копии с привлекательными для пользователя именами: Game.exe, install.exe и т. п. — в расчете, что пользователь не устоит от искушения запустить такой файл.
Первый сетевой червь был создан в 1988 году. Первоначально он разрабатывался как «безвредный» и имел целью скрытно проникать в системы, связанные с сетью ARPANET, и оставаться там необнаруженным. Программа раскрывала пароли, существующие в сети, что позволяло ей маскироваться под легальных пользователей системы и под чужими именами рассылать по сети свои копии. Однако ввиду ошибок программирования вирус вышел из-под контроля автора и начал стремительное саморазмножение. По самым скромным оценкам, инцидент с этим вирусом стоил свыше 8 миллионов часов потери доступа к системе и около миллиона часов прямых потерь, потраченных на восстановление работоспособности сетевых систем. Червь поразил более 6200 компьютеров, а большинство сетей вышло из строя более чем на 5 суток. Общая стоимость потерь оценивается в 96 миллионов долларов. Ущерб был бы гораздо больше, если бы он изначально создавался с разрушительными целями. Тем не менее судом присяжных автор был признан виновным и приговорен к двум годам заключения условно, 400 часам общественных работ и штрафу в размере 10 000 долларов США. К сожалению, история сетевых червей этим не закончилась.
Троянская программа — это компьютерный вирус, который якобы выполняет некоторую полезную функцию, а на самом деле делает совсем другую работу. Например, программа имитирует текстовый редактор или какую-нибудь игру и при этом выполняет не санкционированные пользователем действия: удаление или изменение данных, сбор и пересылку информации другим лицам, передачу управления удаленному пользователю и т. д. В качестве троянца может использоваться программа, предлагаемая для скачивания под предлогом обновления или улучшения уже существующих версий, но в которую автор заранее поместил фрагмент, выполняющий вредоносные функции. Свое название этот класс прог-
193
Телекоммуникационные сети. Интернет
рамм получил в честь известного из гомеровской «Илиады» троянского коня.
Наконец, шпионские программы (Spyware: от английского spy — шпион и software — программное обеспечение). Они обычно распространяются вместе с другим полезным программным обеспечением и занимаются сбором информации на компьютере пользователя и отсылкой ее создателю. Одним из типичных признаков наличия шпионской программы может служить появление в окне программного приложения дополнительных панелей инструментов.
Как видно из уже перечисленного, основным каналом распространения вирусов стали глобальные сети. Зараженные компьютеры клиентов сети нередко используются для рассылки другим пользователям «мусорной» информации (например, рекламы, не запрашиваемой данным пользователем), что мешает эффективному функционированию сети. Для такой информации появился даже специальный термин — спам, а ее производители и рассыль-ш;ики называются спамерами. Можно сказать, что создание вирусов сегодня превратилось из одиночного, подчас хулиганского занятия в бизнес, имеющий связи с бизнесом спама и другой противозаконной деятельностью. Поэтому во многих государствах применение вирусных программ рассматривается как уголовное преступление.
Каковы же средства борьбы с компьютерными вирусами? Это антивирусные программы и аппаратные средства антивирусной защиты. Антивирусная программа — это программа для обнаружения вируса и, возможно, восстановления зараженных им программ. Антивирусная программа также служит для предотвращения заражения вирусом. В настоящее время активно используются антивирусные программы Касперский, KIS, NOD32, Panda и др.
Современная классификация антивирусных программ выглядит так:
• детекторы, позволяющие обнаруживать файлы, зараженные каким-либо известным вирусом (обычно их снабжают еще и функцией доктора);
• доктора (фаги), не только обнаруживающие зараженные файлы, но и пытающиеся вернуть их в исходное состояние;
• ревизоры, которые контролируют изменения в местах вероятных компьютерных атак; с этой целью они запоминают сведения о начальных, предположительно незараженных состояниях программ и системных областях дисков и затем сверяют их с текущим состоянием в указанный пользователем момент работы компьютера, например при очередной загрузке операционной системы;
• доктора-ревизоры, сочетающие в себе свойства двух указанных выше видов программ;
7 Информатика ) 1 кл.
194
• фильтры, перехватывающие те обращения к операционной системе, которые используются вирусами для размножения и нанесения вреда;
• вакцины, или иммунизаторы, модифицирующие программы таким образом, чтобы, не теряя своей работоспособности, они казались вирусу, против которого проводится иммунизация, зараженными, и он к ним уже «не приставал».
Обычно программы-фаги обезвреживают не один какой-то вирус, а работают сразу против всех известных вирусов, такие многонаправленные программы называют полифагами. Более того, современные полифаги снабжены эвристическим анализатором, позволяющим предупреждать о вероятной атаке ранее неизвестного вируса.
Детекторы устроены иначе — они представляют собой базу данных известных к текущему моменту вирусов и осуществляют их розыск в памяти компьютера по специфическим для каждого вируса признакам. Работают они значительно быстрее. Еще быстрее работают ревизоры. Что касается иммунизаторов, то их действие обычно малоэффективно.
В соответствии с этими особенностями и выстраивается эшелонированная антивирусная защита. При каждом запуске операционной системы работает ревизор, при поступлении на компьютер информации из «внешнего мира» в действие приводятся детекторы, ну и конечно необходимо регулярное обследование компьютера по-лифагами.
А что делать, если вирус на вашем компьютере обнаружен? Вот несколько рекомендаций:
• не торопитесь и не принимайте опрометчивых решений — непродуманные действия могут привести не только к потере части файлов, но и к повторному заражению компьютера;
• выключите компьютер, чтобы вирус не продолжал своих разрушительных действий;
• лечение компьютера с помощью антивирусных программ следует выполнять только при загрузке компьютера с лицензионного диска. Если вы производите загрузку с дискеты, то она должна быть специально подготовлена: ее надо заблаговременно отформатировать как системную, записать на нее антивирусную программу и обязательно защитить от записи. Дело в том, что существуют вирусы, нападающие на антивирусные программы. Например, пока антивирусная программа проверяет жесткий диск, вирус заражает файлы этой программы;
• если вы не обладаете достаточными знаниями или опытом для лечения зараженных файлов, попросите помочь вам учителя или других более опытных специалистов.
195
Телекоммуникационные сети. Интернет
Аппаратные антивирусные средства представляют собой дополнительные устройства, практически полностью предотвращающие вирусную атаку.
Главное в антивирусной профилактике — не разглашать своего пароля, активно и грамотно пользоваться предоставляемыми средствами защиты информации, не пользоваться на своем компьютере чужими файлами, для которых нет гарантий вирусной неза-раженности. Особую опасность представляет нелицензированное программное обеспечение. Надо помнить хорошую пословицу — бесплатный сыр бывает только в мышеловке. Заметим, что первая вирусная эпидемия, поразившая в 1968 году только в США 18 000 компьютеров, была вызвана вирусом, созданным братьями Амджа-том и Базитом Алви как наказание местным пиратам за то, что они воруют программное обеспечение, разрабатываемое их фирмой. Вирусный джинн, однако, вырвался из бутылки.
Впрочем, воровать и пользоваться ворованным программным продуктом нельзя не только потому, что за этим может последовать наказание — по закону или внезаконным вирусом. Коммерческая честность, соблюдение авторских и имущественных прав — основа современного экономического и информационного общества.
Иными словами, надо каждому вести себя этично и способствовать в этом своим партнерам.
Во всем сказанном выше есть некая однобокость — речь идет только о защите от преднамеренных действий. Но информация может быть утеряна, искажена или блокирована непреднамеренно, например, из-за ошибочного действия пользователя или сбоя оборудования. Для предотвращения этого создаются резервные копии программ и документов. А большинство современных средств информационных технологий предусматривают автоматическое сохранение информационного продукта в ходе его разработки.
Защита от случайной потери или изменения информации осуществляется в основном следующими материалами:
» обязательным запросом на подтверждение команды, приводящей к изменению содержания какого-либо файла или группы файлов;
• установкой атрибутов, ограничивающий возможность изменения файла (например, с помощью атрибута «только для чтения^)',
• возможностью отменить последнее действие;
» разграничением доступа пользователей к ресурсам, в частности, с помощью системы паролей.
Но и на самом пользователе лежит немаля ответственность за то, чтобы он не нарушал режим информационной защиты.
196
^ Что такое компьютерный вирус?
е Каковы типичные пути проникновения вируса в компьютер?
О Какими мерами можно предотвратить проникновение вируса в компьютер?
Q в Законе «О правовой охране программ для электронных вычислительных машин и баз данных», принятом 23 сентября 1992 года, в статье 15 сказано: «Лицо, правомерно владеющее экземпляром программы для ЭВМ или базой данных, вправе без согласия правообладателя и без выплаты ему дополнительного вознаграждения... изготовлять или поручать изготовление копии программы для ЭВМ или базы данных при условии, что эта копия предназначена только для архивных целей и при необходимости (в случае, когда оригинал программы для ЭВМ или базы данных утерян, уничтожен или стал непригодным для использования) для замены правомерно приобретенного экземпляра».
Каким целям защиты информации отвечает эта статья Закона, призванная защищать авторские права разработчиков программного и информационного обеспечения компьютеров?
О в Уголовном кодексе Российской Федерации, принятом 13 июня 1996 года, в статье 273 сказано: «Создание программ для ЭВМ или внесение изменений в существующие программы, заведомо приводящих к несанкционированному уничтожению, блокированию, модификации либо копированию информации, нарушению работы ЭВМ, системы ЭВМ или их сети, а равно использование либо распространение таких программ или машинных носителей с такими программами наказывается лишением свободы на срок до трех лет со штрафом в размере от двухсот до пятисот минимальных размеров оплаты труда...»
Как принято называть программы, за изготовление и распространение которых предусмотрено наказание в цитированной выше статье УК?
О Как вы понимаете этику Интернета?
2UJ/>L 0) ю { Сообщить ^2
а
а^; }
д) Алгоритм Значение функции_2 вещ: д:, у;
{ Запросить д:;
Если (cos д: - 1 > 01 то
{ у := yJcos~x^;
Сообщить у;
}
1202
Ш
§48
Как доказывают применимость алгоритма
_о
Рассмотрим задачу.
Задача 1. Последовательность строится следующим образом:
=1; Х2 = 3;
= Х„_2 - для каждого п > 2.
Составьте алгоритм нахождения первого числа в этой последовательности, большего 100000.
Переменные здесь можно считать имеющими целочисленный тип. Нужный алгоритм может быть записан так:
Алгоритм Задача! цел: X, Y, Z;
{ X := 1;
Y := 3;
Z ;= У;
Делать пока (Z < 100 000)
{ Z := X- 2*У;
X := У;
У ;= Z;
}
Сообщить Z;
Изменим условие задачи.
Задача 2. Последовательность строится следующим образом: =1; Х2 = 3; ..
.; = Х„_2 - 2Х„_^ для каждого л > 2.
Найдите первое в этой последовательности число, большее
100 000.
На первый взгляд кажется, что это та же задача. Но давайте задумаемся, что является ответом в каждой из них. В первой это алгоритм, и он уже приведен выше; во второй ответом служит число. Значит, это все-таки не одна и та же задача, хотя ясно, что для решения задачи 2 надо просто запустить алгоритм, служащий ответом в задаче 1.
И тут возникает вопрос: получим ли мы ответ, запустив созданный нами алгоритм? Легко понять, что помешать этому может только одно — отсутствие в данной последовательности хотя бы одного числа, большего 100 000. Алгоритм же в этом случае будет
1203
Исследование алгоритмов математическими методами
исполняться бесконечно, вырабатывая все новые и новые члены последовательности.
Что же мы видим? Вопрос о применимости данного алгоритма к исходным данным = 1, Xg = 3 оказался равносилен вопросу о существовании объекта, который этим алгоритмом строится.
Итак, надо убедиться, что в данной последовательности встретится хотя бы один раз число, большее 100 000. Для этого полезно взглянуть на десяток первых членов последовательности:
1; 3; -5; 13; -31; 78; -181; 437; -1055; 2547.
Глядя на них, можно высказать гипотезу, что члены с четными номерами положительны и неограниченно возрастают. Докажем эту гипотезу. Для этого выразим Xg* через предшествующие члены последовательности с четными номерами:
^2k ^2k-2
2k-l ^2k-2
= 5X,
2X
2k-2 " 2(X2^J_5
2(X,
2k-3
2X
2*-г) ^^2k-2
2-^2*-3
^^2k~i) ^^2k~2 ‘^^2k-4 ^^2k-5
^^2k-2 ‘^^2k-4
2(-^2*-7 ^^2к-б)
^^2k-2 4X2^J_4 + 4X2^J„e
^ ^^2k-2 4X2*_4 + 4X2k-6 +
-b 4X2 - 2X1.
Поскольку 4X2 - 2Xj = 10, индуктивное рассуждение показывает, что все члены последовательности с четными номерами положительны. Более того, теперь ясно, что Х2^ > 5Х2^_2. Применяя это
неравенство k раз, получаем Х2^ > 5*'^Х2. Поэтому в данной последовательности имеются члены, большие не только 100 000, но и вообще любого положительного числа. Можно сказать, что мы доказали следующую теорему:
Теорема. Пусть последовательность Х„ определена следующим рекуррентным соотношением:
Xi = 1; Х2 = 3;
Х„
^п-2 - 2Х„_4
для каждого п> 2. Тогда для любого положительного числа М в этой последовательности существует член, больший, чем М.
Заметьте, что ни в формулировке теоремы, ни в ее доказательстве не указывается, каким по номеру будет искомый член последовательности. Более того, не намечается даже способ нахождения нужного члена последовательности. Теоремы, в которых доказывается существование какого-либо объекта, обладающего требуемыми свойствами, без указания способа построения этого объекта, называют теоремами чистого существования. А теоремы, в которых существование нужного объекта доказывается указанием способа его построения, называют конструктивными теоремами существования.
в 204
Сейчас мы сформулируем задачу, в которой напрямую требуется доказать, что область применимости представленного в ней алгоритма — множество всех положительных чисел.
Задача 3. Дан алгоритм:
Алгоритм Задача З вещ: А, Е, X;
{ Запросить А;
Запросить Е;
X := 1;
Делать пока (ABS(X*X - А) > Е)
{ X := (Х + А/Х)/2;
}
Сообщить X;
Докажите, что при любых положительных А и Е алгоритм завершит свою работу за конечное число шагов.
Не будем скрывать, что данный алгоритм представляет собой способ быстрого вычисления приближенного значения квадратного корня из числа А (параметр Е задает, как мы позже увидим, уровень точности). Чтобы продемонстрировать это более отчетливо, преобразуем данный алгоритм таким образом, чтобы после каждого выполнения цикла сообщалось, сколько всего значений X было вычислено:
Алгоритм Задача Зм вещ: А, Е, X; цел: N;
{ Запросить А;
Запросить Е;
X := 1;
N := 1;
Делать пока (ABS(X*X - А) > Е)
{ X := (Х + А/Х)/2;
N := N+ 1;
}
}
Сообщить X; Сообщить N;
Тогда можно сказать, что каждому вычисляемому значению X присвоен порядковый номер; иными словами, мы определили следующую рекуррентно заданную последовательность:
Xj = 1; Х^ = i^n-i + 1'^ при п> 1 и А> 0.
После того как стало ясно, откуда взялся данный алгоритм и для чего он предназначен, приступим к доказательству утверждения Задачи 3.
205
Исследование алгоритмов математическими методами
Прежде всего отметим, что из формул, определяющих сразу следует, что > 0 при любом п. Из хорошо известного неравенства между средним арифметическим и средним геометрическим вытекает, что при л > 1
= (^„-1 + > v^;;~a7^=Va.
Отсюда, в частности, следует, что > А при всех л > 1.
Далее рассмотрим разность двух соседних членов последовательности:
- A/X„_i)/2 = - А/Х„_,)/2 =
Из вышесказанного следует, что Х^_^ - > 0 при всех л > 2 и
^/A = 2^/A +A/X„_i)/2 = у[а^/(2Х,_,);
Х„+ Va = (Х„_1+ 2^/A +A/X„_i)/2 = (Х„_1+ Va)V(2X„_i), откуда, перемножая левые и правые части равенства, получаем Х1-А = (Х1, -А)У(4Х1_,) = (1 -А/Х1_,) (Х1_, -А)/4.
Поскольку при л > 2 справедливо неравенство Х^_^ > А, имеем Х1-А^ (Х^1 -А)/4.
Переходя в этом неравенстве от л к л— 1, от л— 1 к л-2 и т. д., получаем следующую цепочку неравенств:
Х1-А^ (Х1_, -А)/4 < (XU -А)/16 < ... < (Х| - А)/4"-2.
Вспомнив, что Xg = (1 +А)/2, получаем неравенство
0< -А< (1 - A)V4"“4
Поскольку знаменатель с ростом л неограниченно возрастает, а числитель при этом остается одним и тем же, это неравенство означает, что для любого положительного числа Е найдется такой номер, начиная с которого |Х^ - А\< Е, что и требовалось доказать.
Впрочем, из полученного неравенства нетрудно найти номер, начиная с которого |Х^ - А| заведомо меньше, чем Е. Для этого достаточно, чтобы меньше, чем Е, было число (1 - А)^/4"”^. Отсюда л> 1 -Ь log4 (1 -А)^/Е, т. е. в роли нужного л может выступать число 2 + [log4 (1 -А)^/£], и, значит, цикл будет выполняться не более чем 2 + [log4 (1 - Af /Е^ раз. (Через [а] традиционно обозна-
■ 206
чается целая часть числа а, т. е. наибольшее целое число, не превосходящее а.)
Интересно оценить, насколько отличается от Va, когда 1^" -^1 < Е. Помня, что > у[а , легко получить неравенство
Va < Е/(Х^+ Va) < Е/2 4а.
Поэтому при А > 1 выполнено неравенство Va < Е/2, которое означает, что Е/2 дает нам оценку точности приближения
к у[а . Именно этот факт мы имели в виду, когда выше говорили, что Е задает уровень точности вычисления квадратного корня. А как быть, если А< 1? Один из подходов может быть таким:
заменим А на Б = 1/А, вычислим ^/Б, а затем воспользуемся тем, что 4а = l/^/Б.
Отличие ситуации этой задачи от ситуации, которая рассматривалась в Задаче 2, состоит в том, что здесь нам удалось не только доказать конечность алгоритма, но и оценить, сколько шагов потребуется, чтобы достичь нужного результата.
Вопрос1>11й1за Дания
О
в чем различие между конструктивными теоремами и теоремами чистого существования?
Для решения задачи «В какую наименьшую натуральную степень надо возвести число 3, чтобы получилось число, оканчивающееся на 00001?» был составлен следующий алгоритм:
Алгоритм Показатель степени цел: X, У, N-,
X
Y
N
= 1
= 2
= о
Делать пока (У > 1)
X
У
N
= 3*Х-,
= mod(X, 100000); = N + и
}
Сообщить N;
1207
Исследование алгоритмов математическими методами
а) Объясните, почему данный алгоритм решает поставленную задачу.
б) Докажите, что данный алгоритм конечен.
О Дан алгоритм;
Алгоритм Последовательность цел: X, Y, Z, М;
{ Запросить М;
X 1;
Y := 3;
Z := У;
Делать пока (Z < М)
{ Z := Y - 2*Х;
X := Y;
Y := Z;
}
}
Сообщить Z;
Верно ли, что при любом целом М этот алгоритм конечен? Рассмотрите следующий алгоритм:
Алгоритм Суммирование веш: S; цел: N;
{ S := 1;
N 1;
Делать пока (S < 20)
{ N := N + 1;
}
S := S + 1/N^;
}
Сообщить N;
а) Для решения какой задачи предназначен этот алгоритм?
б) * Всегда ли исполнение этого алгоритма заканчивается за конечное число шагов?
Q Рассмотрите следующий алгоритм:
Алгоритм Сумма вещ: S; цел: N, М;
{ S := 1;
N := 1;
Сообщить "Введите натуральное число М";
Запросить М;
Делать пока (S < М)
{ N := N + 1;
S := S + 1/N;
1208
Сообщить N;
а) Для решения какой задачи предназначен этот алгоритм?
б) При М = 1 алгоритм конечен, так как тело цикла не выполнится ни разу. При любом ли значении М данный алгоритм конечен?
О Рассмотрите следующий алгоритм, преобразующий натуральные числа:
(*п — целое положительное число*)
Алгоритм Преобразование цел: о, Ъ, п, т;
{ Запросить п;
Запросить а;
Запросить Ь; т := п;
Делать пока (т ^ а) и (т ^ Ь)
{ т : = СКВ(лг);
} (*конец цикла*)
Сообщить т;
}
Функция СКВ (цел: п) : цел
{ Если п < 10 то { знач := п * п; }
иначе { знач := СКВ (га div 10) + (га mod 10)*(га mod 10); }
}
При каких а и Ь этот алгоритм конечен? Перечислите все возможные здесь варианты.
Дан алгоритм:
Алгоритм цел: К, М;
{ Запросить К;
Запросить М;
Делать пока (К mod 2 = 0 или М mod 2 { Если (К mod 2 = 01 то
{ М := М + К/2-,
}
Если (М mod 2 = 0) то
{ К := К + М/2;
0)
Сообщить М + К;
Определите, для каких пар натуральных чисел К \л М этот алгоритм завершает работу за конечное число шагов.
1209
Исследование алгоритмов математическими методами
аг
§ 49 Лимитирующая функция
.□I
Рассмотрите еще раз те алгоритмы из § 48, для которых потребовалось доказывать конечность. Отличительной их чертой является наличие конструкции цикла в форме Делать пока. Это и понятно: ведь если алгоритм содержит только линейные фрагменты, конструкции ветвления и цикла со счетчиком, то исполнение алгоритма заведомо заканчивается за конечное число шагов. Конечность числа шагов нужно обосновывать лишь в том случае, если в нем используется цикл, для которого заранее неизвестно количество исполнений тела цикла (т. е. цикл с предусловием или цикл с постусловием), или рекурсия. Основным инструментом обоснования конечности алгоритма в этом случае служит лимитирующая функция. Так называют переменную величину, которая каждый раз меняет свое значение при очередном исполнении тела цикла или рекурсивном обращении к вспомогательному алгоритму и обладает следующими двумя свойствами:
1. Лимитирующая функция принимает лишь конечное число значений (быть может, зависящее от исходных данных).
2. В ходе исполнения алгоритма лимитирующая функция принимает каждое свое допустимое значение не более одного раза.
Часто лимитирующую функцию выбирают так, чтобы ее значениями были только натуральные числа и при каждом исполнении тела цикла ее значение уменьшалось.
Рассмотрим пример. В учебнике для 10 класса мы упоминали знаменитый алгоритм Евклида, предназначенный для нахождения наибольшего общего делителя двух натуральных чисел. Вот этот алгоритм:
Алгоритм НОД
цел: т, п;
{ Запросить т;
Запросить п;
Делать пока (не (т = п))
{ Если (т > п) то { пг := т - п; } иначе { п := п - т; }
}
Сообщить т;
}
Как доказать, что этот алгоритм действительно вычисляет НОД двух чисел, мы обсудим в следующем параграфе. А вот почему он конечен?
Рассмотрим величину k = max{m.; п). До начала исполнения цикла она имеет некоторое значение k^. Очевидно, что переменная k
1210
принимает только натуральные значения. Заметим также, что при каждом исполнении тела цикла значение величины k обязательно уменьшается. Но натуральных чисел, меньших числа йд, лишь конечное число. Значит, исполнение тела цикла не может осуш[ес-твляться более чем йд раз. Следовательно, и весь алгоритм заканчивает свою работу за конечное число шагов, какими бы ни были начальные натуральные значения тип.
Впрочем, далеко не всегда бывает так легко указать лимити-руюш!ую функцию. Вспомним, к примеру, задачу 6 из § 47.
Библиотекарь обнаружил, что тома Полного собрания сочинений В. Скотта (а это больше 20 томов!) стоят на полке в полнейшем беспорядке. Чтобы расположить их на полке по порядку, библиотекарь решил поступать так: обнаружив два рядом стояп^их тома, расположенные в неправильном порядке (т. е. том с меньшим номером стоит правее тома с большим номером), он переставляет их местами. Иными словами, он пользуется следуюш[им алгоритмом:
Алгоритм
{ Делать пока (есть два соседних тома, стоящие в неправильном порядке)
{ Поменять эти тома местами;
}
}
Библиотекарь при этом не придерживается никакого правила выбора пары неправильно стояш;их томов и меняет местами первые попавшиеся на глаза тома.
Едва ли очевидно, что этот алгоритм конечен. Не будет ли библиотекарь обречен на сизифов труд? (Миф о Сизифе, по-видимому, первое упоминание о никогда не кончаюш;ихся циклических алгоритмах.)
Приведем доказательство, которое предложил Эдсгер Дийк-стра. Имя этого голландского программиста — классика науки о программировании (Computer Science) — должно быть известно каждому профессиональному программисту.
Заменим каждый том Вальтера Скотта гирей, вес которой равен номеру заменяемого тома. Воспринимая такое «собрание сочинений» как единое целое, можно говорить о центре его тяжести. Легко понять, что, меняя местами более тяжелую гирю с более легкой, мы смещаем центр тяжести совокупности всех гирь вправо.
Однако ясно, что всего возможных положений центра тяжести — конечное число, не больше, чем различных перестановок этих гирь. Значит, неограниченно долго смещаться вправо центр тяжести не может, и потому наступит момент, когда перестановка соседних гирь (томов) закончится. А следовательно, закончится и исполнение алгоритма. Это, в частности, означает, что нарушится условие продолжения цикла, т. е. все тома окажутся расположенными
1211
Исследование алгоритмов математическими методами
В правильном порядке. Таким образом, попутно мы доказали, что является результатом исполнения алгоритма.
Если внимательно присмотреться, то и здесь видна та же идея лимитирующей функции — каждому расположению томов мы ставим в соответствие положение центра тяжести. Однако математическую запись этой функции получить непросто.
Таким образом, для решения задачи надо:
• ввести координатную ось;
• положение каждого тома описать координатой центра тяжести;
• вычислить координаты центра тяжести всего «собрания сочинений» (это и будет лимитирующая функция);
• проверить, что функция возрастает (центр тяжести смещается вправо) при каждом исполнении тела цикла.
Желающие могут это проделать.
Известны весьма простые алгоритмы, для которых решение вопроса об области применимости весьма проблематично. Вот алгоритм, для которого на сегодняшний день не удалось ни доказать, ни опровергнуть гипотезу, что при указанных начальных данных его работа завершается за конечное число шагов:
Алгоритм Проблемный
цел: п. К;
{ К := 1;
Запросить п;
Делать пока {п > 1)
{ Если {п mod 2 = 1) то { re := 3*ге+1; } иначе { ге := ге/2; }
К := К+1;
Сообщить К;
}
Совершенно ясно, что делает этот алгоритм: если на каком-то шаге получилось четное число, то оно делится пополам, если нечетное, то умножается на 3 с последующим прибавлением 1 (т. е. число становится четным). Тем самым после такого увеличения обязательно идет деление пополам и, быть может, не один раз.
В предлагаемых ниже заданиях вам предстоит обосновывать конечность тех или иных алгоритмов. Теперь вы знаете, что для этого нужно подобрать подходящую лимитирующую функцию.
■Bonpocbii и|задания
гнптг-г
I
^ Какие алгоритмические конструкции могут быть причиной бесконечного числа шагов при исполнении алгоритма?
Q Какую функцию называют лимитирующей?
1212
Q Как с помощью лимитирующей функции доказывают, что исполнение алгоритма заканчивается за конечное число шагов?
Q а) Рассмотрите алгоритм, обрабатывающий натуральное число п.
Алгоритм Превращение_1 иел: п, I;
{ Запросить п;
I := 1;
Делать пока (п > 1)
{ Если (п mod 2 = 1) то { л := л - 1; } иначе { л := л/2; }
/ := 7 + 1;
} (*конец цикла*)
Сообщить /;
}
Закончится ли исполнение данного алгоритма за конечное число шагов? Ответ обоснуйте.
б) Рассмотрите еще один алгоритм, обрабатывающий натуральное число п.
Алгоритм Превращение_2 иел: л, 7;
{ Запросить л;
7 := 1;
Делать пока (л > 1)
{ Если (л mod 2 = 1) то { л := л + 5; } иначе { л := л/2; }
7 := 7 + 1;
} (*конец цикла*)
Сообщить 7;
Закончится ли исполнение этого алгоритма за конечное число шагов? Ответ обоснуйте.
Массив Л[1:20; 1:30] заполнен двумя числами: 0 и 1. Рассмотрите следующий алгоритм:
Алгоритм Мимикрия
цел: k, т, п, I, J, А[1:20; 1:30];
{ А := 1;
Делать пока (А; = 1)
{ А := 0;
Делать от 7 := 1 до 20
{ л := 0; т := 0;
Делать от J := 1 до 30 { Если (А[7, е7] = 0) то { л := л -Ь 1; }
1213
Исследование алгоритмов математическими методами
Если А[1, Л = 1 то ( m := m + 1: )
} (*конец цикла*)
Если (т > га) то { Делать от J := 1 до 30
{ Если А[1, = о то { А[1, J] = 1; }
иначе { А[1, «/] = 0; }
}
k := 1;
Делать т J := 1 до 30
{ га := 0; т := 0;
Делать от / := 1 ао 20 { Если А[1, «/] = о то Если А[1, «/] = 1 то
(*конец цикла*)
га := га + 1; } тга ;= тга + 1; } (*конец цикла*)
Если (тга > га) то { Делать от / := 0 до 20
{ Если А[1, J^] = о то { А[1, J) = 1; иначе { А[/, J] = 0; }
k := 1;
}
(*конец цикла*)
Верно ли, что этот алгоритм применим к любому массиву указанного типа? Ответ обоснуйте.
Q Предположим, что исполнитель обладает способностью за одно действие написать весь натуральный ряд, а также вычеркнуть из него все числа, удовлетворяющие какому-либо условию, даже если этих чисел бесконечно много. Рассмотрите следующий алгоритм для этого исполнителя:
Алгоритм Решето { Написать весь натуральный ряд;
Вычеркнуть из него число 1;
Делать пока (есть необведенные числа среди невычеркнутых)
{ Среди невычеркнутых чисел обвести самое маленькое из необведенных;
Из необведенных чисел вычеркнуть те, которые кратны последнему обведенному числу;
} (*конец цикла*)
Сообщить Обведенные числа;
а) Конечен ли этот алгоритм? Ответ обоснуйте.
1214
б) Попытайтесь определить, для чего предназначен этот алгоритм, придуманный древнегреческим математиком Эратосфеном. Докажите свою гипотезу.
Q Рассмотрите следующий алгоритм;
Алгоритм цел: К, М;
{ Запросить К;
Запросить М;
Делать пока (К mod 2 = 0 или М mod 2 = 0)
{ Если {К mod 2 = 01 то { К := К/2;
М := М + К;
}
Если (М mod 2 = 01 то
{ М := М/2;
К := М + К;
}
}
}
Сообщить М * К;
Определите, для каких пар натуральных чисел К и М этот алгоритм завершает работу за конечное число шагов.
Q Дан массив М[1:30], состоящий из положительных чисел. Рассмотрите следующий алгоритм (напомним, что через rand обозначен датчик случайных чисел, генерирующий вещественное число из промежутка [0; 1)):
Алгоритм вещ: X, у, цел: I, J;
М[1:30];
{
У := 1;
Делать пока {у >
0)
}
{ I := ШТ (29,5*rand) + 1;
J := ШТ (29,5*rand) + 1;
X := (М[Л + M[J])/2; у := АВ8(М[Л - M[J])/2;
М[Л := лг;
M[J] := у;
}
Сообщить "Случайность не помеха";
а) Верно ли, что этот алгоритм применим к любому массиву М, содержащему только натуральные числа? Ответ обоснуйте.
б) Будет ли применим этот алгоритм, если массив М состоит из произвольных положительных чисел? Ответ обоснуйте.
1215
Исследование алгоритмов математическими методами
□F
§ 50 Инвариант цикла
Алгоритм написан. А как доказать, что результатом его работы является именно то, что требовалось? Рассмотрим, к примеру, следующий алгоритм:
Алгоритм
цел: k, п; вещ: а, Ь, с;
{ Запросить k;
Запросить а;
Ъ := 1; п := ft; с := а;
Делать пока (п > 0)
{ Если (га mod 2 = 0) то
{ с := с*с; п:= га/2;
}
иначе
{ Ь := Ъ*с; га := га - 1;
}
}
}
Сообщить Ь\
Как вы думаете, для чего предназначен этот алгоритм? Гипотез может быть много. И в любую из них можно поверить. Можно взять конкретные два числа и исполнить для них алгоритм. Вера в высказанную гипотезу от этого испытания может возрасти, либо мы убедимся, что гипотеза неверна.
Можно взять много разных пар чисел и на них проверить высказанную гипотезу. Но все равно это не будет доказательством, что алгоритм предназначен именно для того, что было заявлено.
Как же изучать алгоритмы доказательно?
Исследовать алгоритмы, в которых нет циклов и рекурсии, в общем-то легко: в них каждое действие исполняется не более одного раза. Для такого алгоритма можно просто составить протокол исполнения, записывая результаты последовательного исполнения всех действий.
С циклами и рекурсией все обстоит сложнее: далеко не всегда можно указать конкретное число исполнений тела цикла или обращений к рекурсивной подпрограмме — оно само может оказаться переменной величиной.
Поэтому поступают так. Отыскивают какое-либо свойство объекта, обрабатываемого алгоритмом, такое, которое не меняется при
Е216
исполнении тела цикла. Такое свойство называют инвариантом цикла. Если таким объектом является некоторый набор величин, то инвариант цикла нередко разыскивают в виде соотношения между этими величинами.
Для цикла, записанного в нашем алгоритме, рассмотрим величину Ьс". До начала цикла она равна а*. А теперь составим протокол исполнения тела цикла (см. табл. 5.1).
Таблица 5.1 Протокол исполнения тела цикла
Действие и комментарий к нему Изменение величины
Проверка условия (п mod 2 = 0). Величина fee" изменяться не может, поскольку не меняются величины fe, сиге.
Предположим, что условие выполняется. Выполняются действия, записанные в операторных скобках после слова то.
с := с*с; Величина с меняется на с = с^.
п := га/2; Величина ге меняется на п = п/2. Величина (с')" не изменяется: (с)"'= (с^)"/^ = с". Поскольку величина Ъ не менялась, то не изменилась и величина fee".
Исполнение первой ветви ветвления закончено.
Предположим теперь, что условие не выполнено. Исполняются действия, записанные в операторных скобках после слова иначе.
Ь := Ь*с; Величина Ъ меняется на fe' = fee.
п := п - 1; Величина ге меняется на ге' = ге — 1. Величина fe'e" не изменяется: fe'e" = (fec)c"-^ = fee". Поскольку величина с не менялась, то не изменилась и величина fee".
Исполнение ветвления закончено.
Исполнение тела цикла закончено.
217
Исследование алгоритмов математическими методами
Итак, мы проверили, что величина Ьс" — инвариант цикла. Это значит, что все время Ьс” = а*, в том числе и после выхода из цикла.
Что же мы будем иметь по окончании работы цикла? Чтобы понять это, нужно посмотреть условие окончания цикла (а вовсе не проделывать все операции в цикле, как могут подумать некоторые).
Это условие: п > 0. Значит, по окончании исполнения цикла п = 0. Но тогда справедливо равенство Ьс® = а*. Следовательно, после исполнения цикла Ь = а*, и именно это значение Ь сообщит алгоритм накануне своего завершения.
Вот мы и выяснили (более того, доказали), что является результатом алгоритма. Чтобы убедиться в наличии у этого алгоритма свойства результативности, надо еще доказать его конечность. Мы надеемся, что вы легко сделаете это самостоятельно, указав подходящую лимитирующую функцию.
^ Что такое инвариант цикла?
0 Рассмотрите следующий алгоритм, обрабатывающий натуральное число к:
Алгоритм цел: к, т, п;
{ Запросить к;
т ;= 0;
Делать от га := 0 по fe
{ гаг := гаг + 2*га + 1;
}
Сообщить гаг;
Для чего предназначен данный алгоритм? Выдвинутую гипотезу докажите.
Рассмотрите следующий алгоритм, обрабатывающий натуральные числа m и п:
Алгоритм Загадка цел: гаг, га, х, у, и, v;
{ X := т;
У := га; и := /га;
V := га;
1218
Делать пока (л: < у) или (л: > у)
{
}
Если (х < у) то
{ у := у - х;
V := V + и;
}
иначе
{ X := X - у; и := и + v;
}
}
у := (и + v)/2; Сообщить X, у;
а) Конечен ли этот алгоритм? Ответ обоснуйте.
б) Для чего предназначен данный алгоритм? Выдвинутую гипотезу докажите.
Q Даны два массива К и М с целочисленными элементами, расположенными в порядке возрастания. Рассмотрите следующий алгоритм:
Алгоритм Количество
цел: а, Ь, с, K\l:2Qi\, М[1:30];
{ а := 1 & := 1 с := 1
Делать пока (а < 20) и (6 < 30)
{ Выбор
ПРИ К[а\ < М[Щ { а ПРИ К[а\ > М[Щ { Ь ПРИ к\а\ = м\ъ\
{ а := а -Ь 1;
Ъ Ъ + 1-, с := с -Ь 1;
:= а -Ь 1; } = & + !;}
}
}
}
Сообщить с;
(*конец цикла*)
а) Для решения какой задачи предназначен этот алгоритм?
б) Найдите подходящий инвариант и докажите гипотезу, выдвинутую вами при выполнении пункта а.
lllp
Графы — мощное средство моделирования. Оглянитесь на пройденное вами в 10 классе, и вы убедитесь, что не раз графы возникали при обсуждении весьма, казалось бы, далеких друг от друга вопросов. Транспортная схема (скажем, схема линий метрополитена) и схема предложения, генеалогическое дерево и дерево папок (или каталогов) в памяти компьютера, схема переходов для состояний конечного автомата и схема переходов в экспертной системе — вот далеко не полный перечень тех примеров, когда при изучении информатики в 10 классе возникало понятие графа. В 11 классе вы имели дело с графами, когда рассматривали расстояние Хэмминга между словами и строили алгоритм Хаффмана. Короче говоря, графы заслуживают того, чтобы уделить им особое внимание.
(X
§51 Простейшие свойства графов
Напомним, что граф — это конечная совокупность вершин, некоторые из которых соединены ребрами. Мы будем рассматривать только такие графы, у которых две вершины могут быть соединены только одним ребром. Иногда возникает необходимость рассматривать конфигурации, когда пара вершин соединена несколькими ребрами, — в этом случае говорят, что задан мультиграф, а ребра, соединяющие одну и ту же пару вершин, называют кратными. Ребро не обязано соединять разные вершины. Если ребро соединяет вершину саму с собой, то такое ребро называют петлей.
Две различные вершины графа, соединенные ребром, называют смежными. Количество ребер, выходящих из одной вершины, называют степенью этой вершины. Для петли будем считать, что это ребро выходит из вершины дважды. Степень вершины а будем обозначать у(а).
1220
Первое свойство, которое мы сформулируем, таково:
Сумма степеней всех вершин графа равна удвоенному числу его ребер.
Это свойство обосновывается просто: если подсчитывается сумма степеней всех вершин, то каждое ребро в этой сумме фигурирует ровно два раза.
Из этого свойства есть следствие, которое принято называть леммой о рукопожатиях. Вот формулировка этой леммы:
Для любого графа количество вершин нечетной степени всегда четно.
Леммой о рукопожатиях это утверждение называют из-за следующей интерпретации:
В любой момент времени количество людей, сделавших нечетное число рукопожатий, четно.
Действительно, если вершины графа — это люди, а ребра — это рукопожатия, то видно, что это одно и то же утверждение о получившемся графе.
Вот еще одно свойство:
В любом графе есть по крайней мере две вершины, имеющие одинаковую степень.
Докажем это свойство. Пусть в графе п вершин. Степень каждой вершины может иметь значение от О до п- 1. Если степени всех вершин различны, то каждое из указанных значений должно реализоваться ровно для одной вершины. Рассмотрим вершины степени 0 и степени п- 1. Степень О означает, что эта вершина не соединена ни с какой другой; степень п - 1 означает, что эта вершина соединена со всеми другими вершинами. Но одновременно так быть не может. Свойство доказано.
2 21 Графы и алгоритмы на графах
Маршрутом на графе называется последовательность ребер ej, eg, е^, в которой конец одного ребра служит началом следующего. Если при этом конец последнего ребра последовательности совпал с началом первого ребра, то маршрут называется циклическим. Для графа, изображенного на рисунке 6.1, последовательности е^, eg, е^, eg, eg, eg и eg, е^, eg являются маршрутами, причем второй из них циклический. А последовательность е^, eg, eg маршрутом не является.
Если вершина является концом какого-либо ребра, принадлежащего маршруту, то будем говорить, что данный маршрут проходит через эту вершину.
Маршрут называется цепью, если каждое ребро содержится в нем не более одного раза. Цепь, являющаяся циклическим маршрутом, называется циклом. Цепь, проходящая через каждую свою вершину ровно один раз, называется простой. Если цикл является простой цепью, то его тоже называют простым.
Поскольку в рассматриваемых нами графах нет кратных ребер, то маршрут можно задавать и последовательным перечислением вершин, через которые он проходит. Мы будем иногда этим пользоваться.
Вершины а и Ь называют связанными, если существует цепь, начинающаяся в вершине а и заканчивающаяся в вершине Ь. Договариваются также считать, что каждая вершина связана сама с собой.
Граф называют связным, если любые две его вершины связаны. Если же граф несвязен, то в нем можно выделить так называемые связные компоненты, т. е. такие множества вершин, соединенных ребрами исходного графа, каждое из которых является связным графом. Но вершины из разных множеств уже не связаны.
Один и тот же граф может быть изображен по-разному. Например, граф на рисунке 6.2 на самом деле тот же, что и на рисунке 6.1.
Рис. 6. 1
Рис. 6.2
1222
ВрпррсЬ1|и|задания
^ Что такое граф?
Q Что называют степенью вершины?
О Какое наибольшее число ребер может содержать граф, имеющий п вершин?
О Пусть V - {Л, 2, Z, 4, 5, 6, 7, 8, 9, 10} — множество вершин графа. Для каждого из перечисленных ниже случаев изобразите соответствующий граф:
а) вершины х и у соединены ребром тогда и только тогда, когда (■'f - У)/3 — целое число;
б) вершины X и у соединены ребром тогда и только тогда, когда X + у = 9;
в) вершины X и у соединены ребром тогда и только тогда, когда х + у содержится в множестве V = {^, 2, 3, 4, 5, 6, 7, 8, 9, 10};
г) вершины X и у соединены ребром тогда и только тогда, когда |х - у|< 3;
д) вершины X и у соединены ребром тогда и только тогда, когда х и у не взаимно просты.
@ Составьте список степеней вершин для каждого из графов, построенных вами при выполнении задания 4.
@ Существует ли граф с пятью вершинами и следующим набором степеней вершин:
а) о, 1, 2, 3, 4; б) 1, 1, 2, 3, 4;
в) 1, 1, 2, 2, 4; г) 1, 1, 2, 3, 3?
^ Может ли в государстве, в котором из каждого города выходят ровно три дороги, быть ровно сто дорог?
Q — Наша шпионская сеть была хорошо законспирирована, — признался на допросе агент 007. — В ней было 77 агентов, но каждый знал только семерых.
Почему наверняка можно утверждать, что агент врет?
О Какие вершины графа называются смежными?
© Что называется маршрутом на графе?
Ф Что такое цепь? Какая цепь называется простой?
ф Что такое цикл? Какой цикл называется простым?
© Найдите число простых циклов длины 3, 4, 5 и 6 для графов, изображенных на рисунке 6.3.
1223
Графы и алгоритмы на графах
а)
Рис. 6.3
б)
ф Рассмотрите граф на рисунке 6.2. Расставьте на нем обозначения ребер так, чтобы стало ясно, что это тот же граф, что и на рисунке 6.1.
ф Выясните, одинаковы ли графы, изображенные на рисунке 6.4; на рисунке 6.5; на рисунке 6.6.
ф* На конгрессе собрались ученые, среди которых есть друзья. Оказалось, что никакие двое ученых, имеющие равное число друзей, не имеют общих друзей. Докажите, что найдется ученый, который имеет ровно одного друга.
Какой граф называется связным?
Укажите, какие из графов, построенных вами при выполнении задания 4, связны. Для несвязных графов найдите число компонент связности.
Докажите, что если в связном графе удалить ребро, принадлежащее циклу, то граф останется связным.
Ф
Ф
0
Рис. 6.4
Рис. 6.5
Рис. 6.6
1224
Ш'
§ 52 Способы представления графов
J3
Изображение графа рисунком удобно для восприятия человеком. Однако, если для решения задачи, связанной с графом, надо применить компьютер, такой способ представления уже малопригоден. Поэтому используют другие способы представления графов.
Граф называется нагруженным, если каждому ребру сопоставлено некоторое число. В зависимости от рассматриваемой задачи это число может обозначать расстояние между вершинами, или время перехода от одной вершины к другой (если, например, графом изображена какая-либо транспортная схема), или пропускную способность канала, соединяющего две данные вершины (если в виде графа изображена какая-либо коммуникационная сеть), или еще что-либо. Иногда удобно рассматривать ненагруженный граф как нагруженный, у которого каждому ребру поставлено в соответствие число 1. Поэтому мы обсудим способы представления нагруженных графов.
Обычно граф задают одним из двух способов: перечислением всех его ребер или таблицей, где в клетке на пересечении строки и столбца, соответствующих данным вершинам, указано, соединены эти вершины ребром или нет. Такая таблица называется таблицей смежности. Если граф нагруженный, то для каждого ребра в соответствующей клетке указывается нагрузка. Приведем список ребер для нагруженного графа, изображенного на рисунке 6.7: {АА; 2), (АВ; 3), (АС; 6), {ВС; 2), (AD; 4), {BD; 3), (СП; 5). Таблица 6.1 является таблицей смежности для этого графа.
В таблице смежности ненагруженного графа везде вместо чисел, указывающих нагрузку (т. е. отличных от 0), стояло бы число 1. А в списке ребер ненагруженного графа просто не нужна числовая характеристика.
Надо уметь переходить от одного способа описания графа к другому. Но эта работа совершенно формальна и, следовательно, может быть поручена компьютеру, только нужно составить соответствующий алгоритм.
Таблица 6.1
Таблица смежности
Вершина А В С D
А 2 3 6 4
В 3 0 2 3
С 6 2 0 5
D 4 3 5 0
225
Таблица 6.2
Графы и алгоритмы на графах
Таблица 6.3
1 1 1 1 2 2 3
1 2 3 4 3 4 4
2 3 6 4 2 3 5
ВердаишА 1 / 2 3 -4' ^
2 3 6 4
2 3 0 2 3
- - .3 ;г- 6 2 0 5
; ' 4 : . 4 3 5 0
в дальнейшем в заданиях на составление алгоритма, тем или иным образом обрабатывающего граф, мы для простоты будем считать вершины графа перенумерованными натуральными числами от 1 до п (без пропусков и повторений). Список ребер для нагруженного графа будем задавать как двумерный массив А[1 : 3; 1 : п], где в первой строке соответствующей этому массиву таблицы указывается один конец ребра, во второй — другой его конец, а в третьей — величина нагрузки (здесь п — число ребер в графе). Для ненагруженного графа соответствующий массив содержит только первые две строки. Если граф задается таблицей смежности, то договоримся считать значение первого индекса номером первой вершины, а второго индекса — номером второй вершины; сами номера вершин в массиве не присутствуют. В частности, для графа на рисунке 6.7 при естественной нумерации вершин А— 1, В— 2, С— 3 и D — 4 список ребер в силу нашей договоренности задается массивом, который можно изобразить таблицей 6.2, а таблица смежности имеет вид таблицы 6.3.
^|Вопросы|и|задания1
"Ш
^ Что такое таблица смежности?
Q Для каждого из графов, изображенных на рисунке 6.8, запишите его представление списком ребер и таблицей смежности.
Д)
Рис. 6.8
S Информатика 11 кл.
1226
е Изобразите графы, для которых в таблицах 6.4, 6.5, 6.6 заданы таблицы смежности.
Таблица 6.4
Таблица 6.5
Л в с D Е F G
А 0 0 0 0 1 1 1
В 0 0 0 0 1 1 0
С 0 0 0 0 1 0 1
D 0 0 0 0 0 1 1
Е 1 1 1 0 0 1 1
F 1 1 0 1 1 0 1
G 1 0 1 1 1 1 0
:л;_ в ■ V" D Е F с?
л 0 0 1 0 1 1 0
в 0 0 1 0 0 0 1
с 1 1 0 1 0 1 0
t> 0 0 1 0 0 0 0
Е 1 0 0 0 0 0 1
F' 1 0 1 0 0 0 1
G 0 1 0 0 1 1 0
Таблица 6.6
А е D 'Ж:
А 0 0 0 1 1 1 0
В 0 0 1 1 1 0 1
с 0 1 0 1 0 0 1
D 1 1 1 0 0 0 0
Е 1 1 0 0 0 1 1
F 1 0 0 0 1 0 0
G 0 1 1 0 1 0 0
О а) Граф, имеющий п вершин, задан списком ребер. Составьте алгоритм, создающий по этому списку таблицу смежности, б) Граф, имеющий п вершин, задан таблицей смежности. Составьте алгоритм, создающий по этой таблице список ребер.
1227 Графы и алгоритмы на графах
§ 53 Aiifo^i№Mbi обхода связного графа__________________™
Ш
Пусть имеется связный граф. Это означает, что из любой вершины можно, двигаясь по ребрам, добраться до любой другой его вершины. Скажем сразу: алгоритма, позволяющего по двум заданным вершинам построить путь из одной вершины в другую, нет. Но можно указать алгоритм, позволяющий из заданной вершины совершить обход всех остальных вершин и, значит, заведомо добраться до нужной вершины. Таких алгоритмов существует несколько, мы рассмотрим два из них — наиболее популярных.
Первый из них называется поиском в глубину. Идея алгоритма такова. Пусть зафиксирована начальная вершина Пц- Выберем смежную с ней вершину v^. Затем для вершины выбираем смежную с ней вершину из числа еще не выбранных вершин и т. д.: если мы уже выбрали вершины Vq, ... , Vf^, то следующая вершина выбирается смежной с вершиной из числа невыбранных. Если для вершины такой вершины не нашлось, то возвращаемся к вершине для нее ищем смежную среди невыбранных.
При необходимости возвращаемся еще на шаг назад и т. д. Ясно, что так будут перебраны все вершины графа и поиск закончится. На рисунке 6.9 показаны две реализации поиска в глубину для одного и того же графа (при одинаковом выборе начальной вершины): около каждой вершины написан присвоенный ей порядковый номер при исполнении поиска в глубину. Свое название этот метод получил за то, что при его реализации мы стремимся как можно дальше уйти от исходной вершины, а когда идти уже некуда, возвращаемся в ту вершину, откуда идет хотя бы одно ребро в не пройденные еще вершины.
Однако от идеи до алгоритма путь неблизкий: надо договориться, как задан граф, как помечать вершины, которые уже про-
Рис. 6.9 Два варианта применения поиска в глубину
1228
смотрены, и как из нескольких вершин, смежных с данной, выбрать следующую.
Будем считать, что граф задан таблицей смежности. Кроме того, организуем одномерный массив В, число элементов в котором совпадает с числом вершин в графе. На ft-м месте этого массива будем писать номер вершины, в которую мы попали на ft-м шаге. Из всех смежных вершин будем выбирать вершину с наименьшим номером.
Вот как может выглядеть алгоритм, реализующий поиск в глубину:
Алгоритм Поиск в глубину
цел: ft, m, s, t, и, n, a, v, i, G[l:n; l:n], B[l:n];
{ Запросить л; (*запрашивается количество вершин*)
Запросить Gfl:ra; 1:л]; (* реально это действие — ввод табли-
цы смежности — оформляется двойным циклом *) В[1] :=1; (* в качестве исходной взята вершина с номером 1 *)
Делать от ft := 2 до га { B[ft] := О;
}
ft := 1; (*счетчик количества пройденных вершин*)
т := 0; (*k — т — порядковый номер вершины
для очередного шага поиска*)
Делать пока (к < га)
{ S := 1;
Делать от f 1 до га
{ у := 1;
Делать от i := 1 до ft { Если (В[г] = t) то { у := 0; } }
Если (у = 1 и G(B[ft - /га], t) = 1) то
{ а := t;
S := 0;
}
}
(*если существует смежная вершина, которая еще не просматривалась, то S = 0*^
Если (s = 0) то { ft := ft Ч- 1;
B[ft] := а; т := 0;
}
иначе { /га := /га Ч- 1; }
}
Делать от ft := 1 до га { Сообщить B[ft], ft;
}
}
1229
Графы и алгоритмы на графах
Рис. 6.10 Два варианта применения поиска в ширину
Второй алгоритм называется поиском в ширину. Суть этого подхода состоит в том, чтобы рассматривать все вершины, смежные с уже рассмотренными. На рисунке 6.10 показаны две реализации поиска в ширину для одного и того же графа (при одинаковом выборе начальной вершины).
Как и для поиска в глубину, прежде чем написать алгоритм, надо ответить на те же три вопроса: каким способом представлен граф? Как помечать просмотренные вершины? Как выбирать очередную вершину из нескольких еш;е не просмотренных, но смежных с уже просмотренными? Ответы на эти вопросы дадим такие же, что и при составлении алгоритма поиска в глубину.
А теперь сам алгоритм:
Алгоритм Поиск в ширину
цел: k, т, s, t, п, G[l:ra; 1:га], В[1:га];
{ Запросить п\
Запросить G[l:ra; 1:га]; (*реально это действие — ввод таблицы смежности — оформляется двойным циклом*) В(1) :=1; (* в качестве исходной взята вершина с номером 1 *)
Делать от k •.= 2 ао п { В[Щ := 0;
}
S := 1;
Делать от /г := 2 до га
{ i := 1; т := -1;
Делать пока (G[s,
{ i := t + 1;
}
Если (i < га -t- 1) то { -Вт := k-,
/га := /га + 1;
}
о или t = S или B[i] ^ 0)
230
}
иначе
{ s := k — т;
}
}
Делать от k := 1 по п { Сообщить B[h\, к;
}
А сейчас рассмотрим одну из часто встречающихся задач: найти длину кратчайшей цепи от заданной вершины до любой другой. Длиной цепи при этом называют количество содержащихся в ней ребер.
Идея решения этой задачи состоит в следующем. Исходной вершине припишем число 0. Каждой смежной с ней вершине припишем число 1. Каждой вершине, смежной с той, которая уже помечена числом 1 и не была помечена раньше, приписываем число 2. Каждой вершине, смежной с той, которая уже помечена числом 2 и не была помечена раньше, приписываем число 3. И так далее до тех пор, пока такое действие можно будет производить. При этом могут оказаться вершины, добраться до которых так и не удастся. На рисунке 6.11 приведен результат обработки указанным образом конкретного графа.
Легко понять, что число, помечающее вершину, показывает длину кратчайшей цепи, ведущей к этой вершине от заданной. Описанный метод называется волновым алгоритмом. Запишем волновой алгоритм, считая, что граф задан таблицей смежности. Предположим для простоты, что в графе 20 вершин, а таблица смежности представлена целочисленным массивом G[1: 20; 1: 20]. Результатом работы алгоритма является одномерный целочисленный массив Р[1 : 20], для которого каждое значение элемента P[h\
а)
б)
Рис. 6.11 Результат обработки графа волновым алгоритмом: а) после первого шага; б) полностью обработанный
1231
Графы и алгоритмы на графах
равно длине пути от заданной вершины до вершины с номером k. Договоримся элементу P[h\ присваивать значение -1, если вершина с номером k недостижима.
Алгоритм Кратчайший путь
цел; /, J, А, К, G[l:20; 1:20], Р[1:20];
{ Запросить G[l:20; 1:20];
Запросить А; (* запрашивается номер начальной вершины *) Делать от J := 1 до 20 { Р[1[ := -1;
} (* сначала все элементы массива результатов равны —1*)
(*до исходной вершины добираемся за 0 шагов*)
Р[А] := 0;
Делать от / := 0 до 19 { Делать от -g 1 до 20 { Если Р[К] = I то
{ Делать от J := 1 до 20
{ Если (P[J] = -1 и G[J, = 1) то { P[J] :=/ + !;
}
Делать от J := 1 до 20
{ Сообщить "Кратчайший путь от вершины". А; Сообщить "до вершины", I;
Сообщить "равен", Р[/];
Вопросы|и|задания
^ Исполните алгоритм Поиск в глубину для графов, заданных таблицами 6.4—6.6.
Q Модифицируйте алгоритм Поиск в глубину так, чтобы номер вершины, с которой начинается поиск, запрашивался у пользователя.
О а) Объясните, почему приведенный алгоритм Поиск в глубину не может применяться к несвязным графам. Какое из свойств алгоритмов будет нарушаться при таком применении?
б) Модифицируйте алгоритм Поиск в глубину так, чтобы он стал применимым и к несвязному графу.
1232
О Составьте алгоритм, реализующий Поиск в глубину, для графов, заданных списком ребер.
О Исполните алгоритм Поиск в ширину для графов, заданных таблицами 6.4—6.6.
О Каков смысл переменной т в алгоритме Поиск в ширину?
Q Модифицируйте алгоритм Поиск в ширину так, чтобы номер вершины, с которой начинается поиск, запрашивался у пользователя.
О Составьте алгоритм, реализующий Поиск в ширину, для графов, заданных списком ребер.
О Исполните волновой алгоритм для графов, заданных таблицами 6.4—6.6.
© Граф, изображенный на рисунке 6.11, имеет в точности 20 вершин. Из представленного на рисунке 6.11, б результата работы алгоритма, приведенного в объяснительном тексте, видно, что при значениях параметра /, больших чем 6 (а таких значений 14), цикл будет работать вхолостую — ведь новых чисел при вершинах появиться не может. Модифицируйте алгоритм так, чтобы цикл не исполнялся сверх нужного числа раз.
Ф Граф задан списком ребер. Составьте алгоритм поиска кратчайших цепей от заданной вершины, аналогичный разобранному в объяснительном тексте.
0 Составьте алгоритм, с помощью которого для заданной вершины можно определить компоненту связности, которой эта вершина принадлежит. Рассмотрите два варианта задания графа — списком ребер и таблицей смежности. Компоненту связности в первом случае опишите списком входящих в нее ребер, во втором — списком входящих в нее вершин.
0 Составьте алгоритм, с помощью которого можно найти все компоненты связности для заданного графа. Каждую компоненту связности опишите списком входящих в нее вершин. Рассмотрите два варианта задания графа — списком ребер и таблицей смежности.
Ф Если граф имеет к компонент связности, то достаточно добавить /с—1 ребер, чтобы превратить его в связный граф (меньшего числа ребер недостаточно). Составьте алгоритм, который позволяет превратить граф, имеющий к компонент связности, в связный граф добавлением наименьшего числа ребер. Ясно, что выбор вершин из разных компонент связности для задания ребра между ними можно осуществить неоднозначно. Предусмотрите в своем алгоритме использование датчика случайных чисел для выбора таких вершин.
Рассмотрите два варианта задания исходного графа — списком ребер и таблицей смежности. Новый граф должен быть задан тем же способом, что и исходный.
1233
Графы и алгоритмы на графах
ф* У путешественника есть карта, на которой отмечены города и дороги между некоторыми из них. Все дороги допускают двустороннее движение, и для каждой дороги, соединяющей два города, указана ее длина. Путешественник хочет из одного города добраться в другой кратчайшим путем. Предложите алгоритм, позволяющий найти нужный путешественнику маршрут или сообщить, что такого маршрута нет.
Ф* Квадратная вселенная. В некоторой вселенной, имеющей форму квадрата со стороной 100, расположено несколько точечных планет. Каждая планета отстоит от сторон вселенной и от других планет на целочисленные расстояния. Требуется организовать межпланетную экспедицию, которая побывает на всех планетах. Между планетами космолет движется по прямой. Составьте алгоритм, позволяющий найти кратчайший маршрут для такой экспедиции. Начальный и конечный пункты экспедиции совпадать не обязаны.
ЕГ
§54
Мосты и точки сочленения
М
С D
ыл
G
а)
-.1
Пусть имеется какая-нибудь система связи, например компьютерная сеть. Такую сеть естественно представлять графом, в котором узлы связи — это вершины графа, а линии связи — его ребра. Такой граф должен быть связным, чтобы информация из любого узла связи могла быть передана в любой другой. И весьма желательно, чтобы при выходе из строя какого-либо узла связи или линии сохранилась бы возможность передачи информации из одного узла связи в любой другой. Иными словами, граф остался бы связным, если из него удалить некоторую вершину вместе с входящими в него ребрами или если удалить из него ребро.
Вершина связного графа называется точкой сочленения, если после ее удаления из графа (вместе с входящими в нее ребрами) граф перестает быть связным.
Ребро связного графа называется мостом, если после его удаления граф перестает быть связным.
Связный граф называется двусвязным, если он не имеет точек сочленения.
Для графа, изображенного на рисунке 6.12, а, вершины D, Е, F is. Н — точки сочленения, а ребра DE и HI — мосты. Граф, изображенный на рисунке 6.12, б, двусвязен.
и
б)
Рис. 6.12 Примеры графов
1234
Bpnpbcbif и|задания i
^ Что такое точка сочленения?
Q Какое ребро связного графа называют мостом?
О Какой граф называют двусвязным?
^ а) Проверьте, что граф, изображенный на рисунке 6.12, а, действительно имеет точками сочленения те и только те вершины, которые перечислены в объяснительном тексте параграфа.
б) Проверьте, что граф, изображенный на рисунке 6.12, а, действительно имеет мостами те и только те ребра, которые перечислены в объяснительном тексте параграфа.
в) Проверьте, что граф, изображенный на рисунке 6.12, б, действительно двусвязен.
© Укажите мосты и точки сочленения для графов, представленных на рисунке 6.13.
Рис. 6.13
@ а) Дан связный граф, содержащий не менее трех вершин. Известно, что в нем имеется мост. Можно ли утверждать, что этот граф содержит точку сочленения?
б) Дан связный граф, содержащий не менее трех вершин. Известно, что в нем имеется точка сочленения. Можно ли утверждать, что этот граф содержит мост?
^ Составьте алгоритм, с помощью которого можно найти все точки сочленения заданного графа. Рассмотрите два варианта задания графа — списком ребер и таблицей смежности.
Составьте алгоритм, с помощью которого можно найти все мосты заданного графа. Рассмотрите два варианта задания графа — списком ребер и таблицей смежности.
@ а) Докажите, что вершина v является точкой сочленения в связном графе тогда и только тогда, когда найдутся такие две вершины а и Ь, для которых любая цепь, соединяющая эти вершины, проходит через вершину V.
б) Докажите, что ребро связного графа является мостом тогда и только тогда, когда оно не принадлежит никакому циклу этого графа.
1235
Графы и алгоритмы на графах
ИГ
§ 55 Деревья
Ш
в теории графов деревом называется связный граф без циклов. Но взгляните на любое дерево за окном: если точки, где ветви соединяются, принять за вершины графа, то получится именно граф без циклов.
Деревья — это те графы, с которыми вы в курсе информатики, да и других предметов, чаш;е всего имеете дело. Дерево каталогов и генеалогическое дерево, да и вообш;е любая иерархическая система с точки зрения своей структуры представляют собой именно дерево. Применяя алгоритмы поиска в глубину или в ширину, вы из исходного графа извлекаете дерево — вершинами в нем являются вершины исходного графа, и эти вершины соединяются ребром, если при исполнении алгоритма переход от одной вершины к следующей осуществлялся по этому ребру. На рисунке 6.14, а представлено дерево, полученное применением поиска в глубину в соответствии с рисунком 6.7, а; на рисунке 6.14, б представлено дерево, полученное применением поиска в ширину в соответствии с рисунком 6.10, а. Дерево, которое содержит все вершины некоторого заданного графа G и ребра которого являются ребрами этого графа, называется каркасом графа G. Так что можно сказать, что на рисунке 6.14 представлены два каркаса одного и того же графа. По-другому каркас называют остовом или стягивающим деревом.
Дерево, как правило, изображают некоторым стандартным образом. Для этого фиксируют одну из вершин, ее называют корнем. Корень обычно изображают внизу, а все остгшьные вершины распределяют по уровням. На первом уровне размещаются вершины, смежные с корнем, на втором — смежные с вершинами первого уровня, отличные от корня, на третьем — смежные с вершинами второго уровня, отличные от вершин первого уровня, и т. д.
12
а)
б)
Рис. 6.14 Деревья, получаемые при обходе графа
1236
I
\/
V
\У ^ \|/
На рисунке 6.15 приведены два изображения одного и того же дерева, взятого с рисунка 6.14, б, при разном выборе корневой вершины: в первом случае корнем служит вершина, обозначенная числом О, во втором — обозначенная числом 6. Впрочем, нередко бывает удобнее рисовать дерево сверху вниз или слева направо.
Выбор корня фактически превращает дерево в ориентированный граф: на каждом ребре направление выбирается от меньшего уровня к большему. Именно такой граф фигурировал у нас при рассмотрении алгоритма Хаффмана в § 18. Там же вершины степени 1, отличные от корня, были названы листьями. Легко видеть, что, удаляя лист вместе с ведущим в него ребром, мы одновременно уменьшаем на 1 количество вершин и количество листьев. Проделав это столько раз, сколько ребер в дереве, мы останемся один на один с корнем. Следовательно, в любом дереве вершин всегда на 1 больше, чем ребер. На самом деле справедливо и обратное утверждение: если в связном графе количество вершин на 1 больше числа ребер, то это — дерево. В задании 7 мы предлагаем вам доказать это утверждение самостоятельно.
Рис. 6.15 Одно и то же дерево при разном выборе корня
I
'ШВопросы|и|задания1
^ Какой граф называют деревом?
Q Как связаны количества ребер и вершин в дереве?
О Для графа, изображенного на рисунке 6.14, а, нарисуйте дерево, взяв в качестве корня вершину, обозначенную: а) числом 5; б) числом 10.
Q Изобразите все деревья с четырьмя и пятью вершинами.
Q а) Постройте дерево, полученное применением поиска в глубину для графа, изображенного на рисунке 6.9, б.
б) Постройте дерево, полученное применением поиска в ширину для графа, изображенного на рисунке 6.10,6.
Докажите, что связный граф является деревом тогда и только тогда, когда любое его ребро является мостом. (Совет. Воспользуйтесь утверждением, сформулированным в задании 96 к § 54.)
1237
О
Графы и алгоритмы на графах
О
Докажите, что связный граф, в котором количество ребер на 1 меньше числа вершин, является деревом. (Совет. Воспользуйтесь утверждением, сформулированным в задании 19 к § 51.)
Составьте алгоритм, позволяющий построить каркас с использованием поиска в глубину. Рассмотрите два варианта задания графа — списком ребер и таблицей смежности.
Составьте алгоритм, позволяющий построить каркас с использованием поиска в ширину. Рассмотрите два варианта задания графа — списком ребер и таблицей смежности.
а"
§ 56 Каркасы минимального веса
М
Представьте себе, что надо соединить несколько пунктов линиями связи. Известна стоимость возможного строительства линии между парами таких пунктов. Какие именно пункты надо соединить, чтобы получившаяся сеть обслуживала все пункты и при этом имела минимальную стоимость?
Переводя эту задачу на язык графов, можно сказать так.
Имеется нагруженный связный граф. Требуется найти каркас с минимальным суммарным весом его ребер.
Таких каркасов у данного нагруженного связного графа может быть несколько. На рисунке 6.16, бив приведены два каркаса минимального веса для графа, изображенного на рисунке 6.16, а. Разумеется, вес обоих минимальных каркасов одинаков.
Опишем метод построения хотя бы одного каркаса минимального веса, известный как алгоритм Краскала. Будем считать, что исходный связный граф G задан списком ребер. Получающийся каркас тоже будет задан списком ребер. Алгоритм Краскала предусматривает построение двух последовательностей множеств ребер исходного графа: Tj, Tg, Т^, ... и Е^, Е2, Е^, ..., при этом на
а)
б)
в)
Рис. 6.16 Граф и два каркаса для него
238
некотором шаге одно из множеств Т,^ оказывается каркасом минимального веса, после чего исполнение алгоритма завершается.
На первом шаге выбираем ребро наименьшего веса (если таких ребер несколько, то берем любое из них) и полагаем = {е^. В качестве множества строится множество ребер, каждое из которых не содержится в и при добавлении к не образует цикл.
Пусть уже построены множества Т^, Тд, ..., и Е^, Е2, ..., Е^. Если множество Е,^ не содержит ребер, то в качестве искомого каркаса берем множество Tf^. Если же множество Е^ не пусто, то строим + 1 и + 1 по следующему правилу: в множестве Ef^ выбираем ребро наименьшего веса (если таких ребер несколько, то снова берем любое из них) и добавляем его в множество Tf^, это и будет множество i; множество состоит из таких ребер, что каждое из них не содержится в при добавлении любого из них
к множеству не образуется цикл. Такое построение после-
довательности множеств Tf^ и Е,^ повторяется, пока множество Е^ не станет пустым.
Алгоритм, реализующий эту идею, вы составите самостоятельно, выполнив задание 5. Но нельзя не задаться вопросами:
1. Почему соответствующий алгоритм конечен?
2. Почему соответствующий алгоритм результативен?
3. Почему результатом является требуемый каркас?
Конечность алгоритма обеспечивается тем, что количество ребер, остающихся вне множества Т^, на каждом шаге уменьшается на 1. Следовательно, и в множество Е^^ в некоторый момент нельзя будет добавить ни одного ребра.
Предложенный алгоритм не является детерминированным, поэтому надо убедиться, что после его завершения образуется каркас исходного графа. Пусть исполнение алгоритма завершилось построением графа т. е. множество Е,^ не содержит ребер. По построению в нет циклов. Если Tf, не содержит хотя бы одну вершину исходного графа G, то ребро, выходящее из этой вершины, не принадлежит Tfi, а при включении его в не может образоваться цикл. Тогда это ребро обязано было попасть в Е^, что противоречит тому, что множество Ef^ пусто. Значит, содержит все вершины графа G. Осталось показать, что связен. Допустим снова, что это не так. Тогда Т,^ содержит по крайней мере две компоненты связности, скажем, А п В. Поскольку исходный граф G связен, существуют смежные вершины а из А и & из П. Пусть е — соединяющее их ребро. Тогда е не принадлежит Т^. Более того, по определению е является мостом исходного графа G. Значит, в графе, полученном из Tf^ добавлением этого ребра, не может образоваться
1239
Графы и алгоритмы но графах
цикл, ибо иначе цикл, содержащий ребро е, был бы и в самом графе G. Снова получаем, что ребро е должно было бы попасть в множество Е^, что противоречит отсутствию в элементов. Это противоречие показывает, что на самом деле граф Т,^ связен и, следовательно, — дерево, содержащее все вершины графа G,
т. е. Tt
каркас графа G.
Осталось ответить на третий вопрос: почему вес у построенного каркаса минимален?
Допустим, что это не так. Выберем каркас Т, имеющий наименьший суммарный вес. Как мы уже говорили, таких каркасов с наименьшим весом может оказаться несколько. Выберем среди них такой, у которого наибольшее количество общих с каркасом ребер. Будем по-прежнему обозначать этот минимальный каркас буквой Т.
Можно считать, что в каркасе все ребра перенумерованы в порядке поступления их в Т^. Ясно, что не может целиком содержаться в Т, ибо иначе эти два каркаса просто бы совпали — ведь у них одно и то же множество вершин. Пусть — ребро с наименьшим номером, которое содержится в но не содержится в Т. Добавим это ребро к графу Т. В получившемся связном графе F, очевидно, образовался некоторый цикл С. В этом цикле есть ребро е, не принадлежащее каркасу Т^, ибо в Т,^ вообще нет циклов. Рассмотрим граф Т', полученный из графа Т изъятием ребра е и добавлением ребра Граф Т' связен, поскольку получен из связного графа F удалением ребра, принадлежащего циклу (см. задание 19 к § 51). Граф Т' является деревом, поскольку в нем столько же ребер и вершин, сколько в дереве Т, т. е. вершин на 1 больше, чем ребер (см. задание 7 к § 55). Наконец, все вершины графа G принадлежат графу Т', поскольку у Т и Т' одно и то же множество вершин. Тем самым Т' тоже каркас графа G.
Сравним вес ребер е и е^. Поскольку ребра е^, eg» — > ^m-i принадлежат Т, добавление ребра е к множеству ^ не создает цикла в получающемся графе (ибо Т — дерево). Правило выбора показывает, что вес е не меньше веса (иначе в было бы включено другое ребро, нежели е^). Данное сравнение весов показывает, что вес графа Т' не больше веса графа Т. Но каркас Т имеет наименьший вес среди всех каркасов графа G. Значит, вес каркаса Т' совпадает с весом каркаса Т, т. е. тоже является наименьшим. Однако у каркаса Т' количество общих ребер с каркасом Т,^ на единицу больше, чем у каркаса Т, что противоречит выбору Т. Полученное противоречие показывает, что каркас сам является каркасом минимального веса.
Теперь можно приступать к выполнению заданий.
1240
_МВопросЬ1|и|заданияШ
■Р^ие»
О Какая функция выступает лимитирующей в алгоритме Краскала?
Q Используя метод Краскала, найдите каркас минимального веса для графов, представленных на рисунке 6.17.
о
о
о
о
о*
о
а)
Рис. 6.17
Алгоритм Краскала, как отмечалось в объяснительном тексте, не является однозначным. Рассмотрим множество всех каркасов минимального веса, которые могут получиться в результате применения этого алгоритма к заданному графу G. Верно ли, что это множество содержит все каркасы минимального веса, имеющиеся в графе G?
Как нужно изменить алгоритм Краскала, чтобы его можно было использовать для построения каркаса максимального суммарного веса?
Запишите алгоритм, реализующий метод Краскала. Для этого определите, как именно будет выбираться очередное ребро для построения множества из множества 7^_,.
Составьте алгоритм, реализующий метод Краскала, если граф задан таблицей смежности.
Алгоритм Прима. В этом методе поиска каркаса минимального веса при построении очередного множества в него включаются только те ребра, которые не содержатся в 7^,, не образуют цикл при добавлении к 7;^ и имеют общую вершину хотя бы с одним ребром из 7^,. Постройте этим методом каркасы минимального веса для графа, изображенного на рисунке 6.17, б.
Попытайтесь обосновать, что алгоритм Прима, описанный в задании 7, всегда дает каркас минимального веса.
Составьте алгоритм, реализующий метод Прима. Рассмотрите два варианта задания исходного графа — списком ребер и таблицей смежности.
\
, .Vj D 'J-10:^
. ' ■-'. Vj ’TJ'ri ■’ .
Наука и искусство ведения борьбы по определенным правилам — так истолковывается значение слова стратегия в «Словаре иностранных слов». Искусство, будучи неформализуемым видом человеческой деятельности, мы детально рассматривать не будем, хотя это, разумеется, тоже информационная деятельность. А вот наука, цель которой, как мы уже неоднократно говорили, — построение моделей на подходящем формализованном языке, представляет для нас особый интерес.
Всякая борьба предполагает взаимодействие по крайней мере двух сторон. Иногда мы говорим, что зима борется с летом или ветер с дождем, но нас будет интересовать тот случай, когда одной из борющихся сторон является управляемый формальный исполнитель. Другая сторона при этом может быть представлена стихией, т. е. быть неуправляемой, или тоже являться какой-либо совокупностью управляемых исполнителей. Типичный пример борьбы управляемых исполнителей — военные действия двух или большего числа противников. Надо честно признать, что своим происхождением само слово «стратегия» (в переводе с древнегреческого — веду войска) обязано именно военной деятельности.
В любой борьбе всегда преследуются какие-то цели — иногда хорошо осознанные, иногда нет. Вопрос о том, как достичь этих целей, — типичная жизненная (т. е. плохо поставленная) задача. В большинстве случаев нечетко определены силы противников (исходные данные), не вполне ясен результат, который нужно получить, и уж совсем неведомы связи между исходными данными и результатом. Формализация этой жизненной задачи, как обычно, сводится к построению соответствующей модели. Такую модель называют игрой.
а"
§ 57 Дерево 4irpi»i
:а
в любой игре всегда точно определены исходные позиции (в том числе игровой материал), результат игры (что именно считать выигрышем, а что поражением), какие действия можно совершать в ходе игры каждому из игроков. Всякая игра состоит из последовательности ходов, поочередно совершаемых каждым
1242
из игроков. Правилами может быть предусмотрен «пропуск хода», но тогда можно считать, что это тоже некоторый ход данного игрока, не меняющий сложившуюся к этому моменту позицию. Мы будем рассматривать только конечные игры, т. е. игры, которые за конечное число шагов приводят к заключительной позиции, после чего игра прекращается. При этом заключительных позиций может быть несколько, а количество шагов, приводящих к какой-либо заключительной позиции, вполне может оказаться неизвестным заранее.
Игры могут быть разными: игра в теннис отличается от игры в шахматы, хотя в обеих играх взаимодействуют два игрока, есть строгие правила чередования ходов, совершенно ясно, как определяется выигрыш того или иного игрока. В чем же отличие?
Перед каждым ходом игрок должен принять решение, какое действие он предпримет. Если игрок всегда точно знает, к какой позиции приведет выбранный им ход, то такая игра называется игрой с полной информацией. К играм с полной информацией как раз и относятся шахматы, шашки. Го, крестики-нолики и т. п. А домино и преферанс — игры с неполной информацией. Про теннис уж и говорить нечего — в ход игры может вмешаться даже природа. Наше обсуждение годится для игр как с полной, так и с неполной информацией, но мы в основном будем рассматривать игры с полной информацией.
Начнем с простой игры. Имеется кучка из п камней, где п > 3. Первый игрок своим первым ходом делит эту кучку на две так, чтобы в каждой было не менее двух камней. Затем ход делает второй игрок, потом снова первый и т. д. Своим ходом игрок выбирает произвольную кучку, содержащую не менее четырех камней, и делит ее на две части так, чтобы в каждой было не менее двух камней. Проигрывает игрок, который не может сделать очередной ход.
Ясно, что мы сейчас описали не одну игру, а много игр: для каждого конкретного п будет свой вариант игры. Пусть для примера п = 9. Проанализируем, как может проходить игра.
После хода первого игрока может получиться одна из трех позиций: (7; 2), (6; 3) или (5; 4). Изобразим это графом (рис. 7.1). Теперь для каждой позиции рассмот-(7; 2) рим, что получится после хода второго игрока. Результат представлен на рисунке 7.2.
Из позиции (3; 3; 3) дальнейший ход невозможен, т. е. в этой позиции выигрывает второй игрок. (6; 3) В остальных случаях возможно продолжение. Результат представлен на рисунке 7.3. Позиции, которые возникли в этих вариантах, заключительные. В них выигрывает первый игрок.
(5; 4) Построенное дерево вариантов называется дере-
вом игры. Для любой игры с полной информацией существует дерево игры.
Рис. 7.1
1243
Игры и стратегии
Анализ дерева игры показывает, что у первого игрока есть выигрышная стратегия: если первым ходом он разбивает кучку на две любым из двух способов — (7; 2) или (5; 4), то при любом ходе второго игрока он выигрывает.
Выигрышной стратегией для данного игрока называется такое правило совершения ходов этим игроком, при соблюдении которого он добивается выигрыша при любых ответных ходах другого игрока (или других игроков, если их несколько).
Для тех игр, где возможна ничья, цель игры может состоять в том, чтобы не проиграть противнику. Тогда естественно говорить о непроигрышной стратегии.
• ,ШВопросы)и|задания11
Q Почему игру можно считать моделью борьбы противостоящих сторон? Q Чем характеризуется любая игра?
^ Какая игра называется конечной?
Q Являются ли шахматы и шашки конечными играми?
О Какую игру называют игрой с полной информацией?
Q Что такое дерево игры?
Q Что называют выигрышной стратегией?
Q Сформулируйте определение непроигрышной стратегии.
Q Постройте дерево игры, описанной в объяснительном тексте, если: а) п = 8; б) п = 11; в) п = 13. Для каждого из указанных п определите, какой из игроков имеет выигрышную стратегию.
1244
© Из клетчатой бумаги вырезан прямоугольник размером т х п клеток, где m > 1 и п > 1. Играют двое. Игроки делают ходы по очереди. Первым ходом прямоугольник разрезается на две части по прямой, идущей по сторонам клеток. За один ход разрешается разрезать любой из имеющихся прямоугольников на две части по прямой, идущей по сторонам клеток. Выигрывает тот, кому удастся своим ходом отрезать квадратик со стороной 1. Постройте дерево игры, если: а) m = 5, п = 7; б) m = 9, п = 10; в) т = п = 11. Для каждой пары указанных значений т \л п определите, какой из игроков имеет выигрышную стратегию.
Ф Перед двумя игроками лежат две кучки камней: в одной т камней, в другой п камней. За один ход разрешается увеличить число камней в любой из двух кучек в 3 раза или добавить в любую из кучек 1 камень. Игроки делают ходы по очереди. Выигрывает тот, кому удастся своим ходом получить суммарное количество камней в обеих кучках, большее 20. Постройте дерево игры, если: а) m = п = 4; б) m = 2, п = 3. Для каждой пары указанных значений тип определите, какой из игроков имеет выигрышную стратегию.
ф Как можно доказать, что некоторая игра является конечной?
© Докажите, что при любом начальном значении п игра, описанная в объяснительном тексте, является конечной.
© Докажите, что игры, описанные в заданиях 10 и 11, при любых начальных значениях тип являются конечными.
ш
$ 58 Построение стратегии
М
Для большинства игр осуществить полный перебор всевозможных последовательностей ходов, как правило, практически невозможно. Даже если в каждой позиции нужно делать выбор всего лишь из двух вариантов, то игра двух игроков, продолжающаяся п ходов, потребует рассмотрения 2" последовательностей. Уже при п = 30 (т. е. каждый игрок сделает всего по 15 ходов) требуется перебрать более миллиарда вариантов.
Давайте еще раз посмотрим на рисунки 7.2 и 7.3. Обратите внимание, что в различных последовательностях ходов возникают одинаковые позиции. Так, после второго хода (рис. 7.2) возможны всего три различные позиции: (5; 2; 2), (4; 3; 2) и (3; 3; 3). Позиции, записи которых отличаются только порядком чисел, одинаковы. А после третьего хода, если он возможен, вообще оказалась только одна позиция: (3; 2; 2; 2). Но если позиции одинаковы, то и решение игрока, каким должен быть очередной ход, будет для них одинаковым. Тем самым напрашивается вывод: анализировать надо не последовательности ходов, а позиции, которые могут реализоваться в ходе игры.
1245
Игры и стратегии
В конечной игре с полной информацией для каждой позиции существует такая последовательность ходов, которая приводит к гарантированному оптимальному результату.
Чтобы проиллюстрировать обсуждаемые идеи, рассмотрим следующую простую игру. На прямоугольном клетчатом поле в некоторой клетке ставится фишка. За один ход ее разрешается переместить на любое количество клеток либо по горизонтали влево, либо по вертикали вниз, либо по диагонали влево и вниз. Два игрока по очереди делают ходы фишкой. Проигрывает тот, кто не сможет сделать очередной ход.
Нетрудно видеть, что в этой игре ровно одна заключительная позиция — фишка стоит в левом нижнем углу. Для каждого игрока заключительная позиция имеет ровно одно значение — тот, кто привел фишку на это поле, выиграл; другой игрок проиграл. Каждая незаключительная позиция для игрока, который из этой позиции должен делать ход, будет выигрышной или проигрышной в зависимости от того, имеется ли для нее последовательность ходов, гарантирующая выигрыш. Давайте разметим клетки игрового поля, поставив знак «-Ь», если позиция, когда фишка стоит на этой клетке, является выигрышной, и знак «—», если позиция проигрышная. Столбцы будем нумеровать слева направо, строки — снизу вверх. Клетка в первом ряду и в первом столбце — это левая нижняя клетка: там, очевидно, стоит знак «—». Но тогда во всех клетках вертикального, горизонтального и диагонального рядов, начинающихся с этой клетки, надо поставить знак «-Ь». Клетка, стоящая во втором ряду и третьем столбце, должна быть отмечена знаком «-», поскольку из нее фишку можно передвинуть только в клетку, уже отмеченную знаком «-Ь», т. е. в клетку гарантированного выигрыша противника. Но тогда сразу же знаком «-Ь» надо отметить все еще не помеченные клетки второго ряда, третьего столбца и диагонали, проходящей через эту клетку (рис. 7.4, а). На рисунке 7.4, б приведена полная разметка некоторой части доски как угодно большого размера.
Теперь вместо того, чтобы анализировать всевозможные последовательности ходов, достаточно знать проигрышные позиции: стратегия игры состоит в том, чтобы своим ходом поставить фишку на клетку, отмеченную знаком «—». Эту стратегию можно оформить следующим алгоритмом:
Алгоритм СтратегияЧ-
{ Делать пока (фишка не стоит в левом нижнем углу)
{ Если (фишка стоит на клетке, отмеченной знаком «Ч-») то { перевести ее, следуя правилам игры, на клетку, отмеченную знаком «—»;
1246
+ -1- -1-
+ -1- -1- -1-
+ -1- -1- -1-
+ -1- -1- -1-
+ -1- -1- -1-
+ -1- -1- -1-
-1- -1- -1-
-1- -1- - -1- -1- -1- -1- -1- -1-
- -1- -1- -1- -1- -1- -1- -1- -1-
-1- -1- -1- -1- -1- -1- -1- -1- -1-
-1- -1- -1- -1- - -1- -1- -1- -1-
-1- -1- -1- -1- -1- -1- -1- -1- -1-
-1- -1- -1- - -1- -1- -1- -1- -1-
-1- -1- -1- -1- -1- -1- -1- - -1-
-1- -1- -1- -1- -1- - -1- -1- -1-
-1- - -1- -1- -1- -1- -1- -1- -1-
-1- -1- - -1- -1- -1- -1- -1- -1-
- -1- -1- -1- -1- -1- -1- -1- -1-
а)
б)
Рис. 7.4 Разметка игрового поля выигрышными (+) и проигрышными (-) позициями
иначе
{ перевести ее, следуя правилам игры, на любую другую клетку;
}
(* Легко видеть, что по способу заполнения поля невозможно перевести фишку из «проигрышной» клетки в «проигрышную» *)
}
}
Отметим, что это еще не алгоритм игры. Ведь алгоритм игры должен состоять из допустимых действий исполнителя (в данном случае игрока).
Предположим, что размеры поля изначально фиксированы. Тогда можно составить список проигрышных позиций. Такой список может состоять, например, из пар номеров строк и столбцов тех клеток, в которых стоит знак «-»: (1; 1), (2; 3), (3; 2), (4; 6), (5; 8), (6; 4), (7; 11) и т. д. Для краткости будем называть эти пары чисел координатами. В памяти компьютера список проигрышных позиций можно хранить в виде двумерного массива. Приведем алгоритм для одного игрока; при этом мы не проверяем корректность ходов второго игрока, считая, что он поступает честно и все ходы делает строго по правилам.
Алгоритм Игра
цел: тахх, таху; (* размеры поля по горизонтали и вертикали *)
цел: п, а[1:га; 1:2]; (* таблица проигрышных позиций*)
1247
Игры и стратегии
(* реально ввод таблицы оформляется двойным циклом *)
цел: k, т, х, у;
{ Запросить п;
Запросить а[1:га; 1:2];
Запросить тахх;
Запросить таху;
X := га.пА{таххУ,
у := га.пА{таху)У, (* rand(N) — генератор случайных
чисел из промежутка [0; N] *)
Делать пока (л; > 1 и г/ > 1)
{ Сообщить "Фишка стоит на поле", х, у;
Сообщить "Введите координаты фишки после вашего хода"; Запросить д;, у;
Если (Jc=lH!/=l)lo{ Сообщить "Вы выиграли. Поздравляю!"; } иначе
{ ХОД (д:, у, k, ту.
Сообщить "Мой ход - фишка на поле", k, т;
Если (й = 1 и m = 1) IQ { Сообщить "Я выиграл. Поздравьте меня!";
}
}
В этом алгоритме использован вспомогательный алгоритм ХОД. Вот как он выглядит:
Алгоритм ХОД Гарг: х, у; овз: k, т) цел: V,
{ Если (д; = 1 или г/ = 1) то
{ * := 1; т := 1;
}
иначе
{ i :=1;
Делать пока (a[i, 1] < д; или a[i, 1] > д; или i = га + 1)
{ I := I :+ 1;
} (* поиск знака «-» на вертикали с номером х *)
Если (i < га + 1 и a\i, 2] < г/) то { /га := a[i, 2]; k := д:;
} (* знак «—» оказался ниже клетки, где стоит фишка *)
иначе
{ Если (i < га + 1 и a[i, 2] = и) то { т := у - 1; k := х\
} (* знак «—» оказался в клетке, где стоит фишка *)
1248
иначе
{ i := 1;
Делать пока (a[i, 2] < у или a[i, 2] > у или i = га + 1)
{ i := i :+ 1;
} (* поиск знака «—» на горизонтали с номером у *)
Если (i < га + 1 и a[i, 21 < и) то { k := a[i, 1]; т := у,
} (* знак «—» оказался левее клетки,
где стоит фишка *)
иначе
{ i := 1;
Делать пока (a[i, 2] - a[i, 1]<у - х или a[i, 2] - a[i, 1]>у- х) { i := I :+ 1;} (*поиск знака «—» на диагонали *)
k := а[1, 1]; т := a[i, 2];
} (* ход по диагонали *)
Как видите, от стратегии игры до алгоритма игры дистанция огромного размера.
Можно играть на клетчатом поле, у которого нет верхней и правой границ. Игровое пространство (т. е. совокупность клеток, на которые можно ставить фишки в ходе игры) определяется начальным положением фишки, которое выбирается случайным образом. При этом, однако, мы вынуждены поручить компьютеру самому отыскивать поля, которые должны быть отмечены знаком «-». Алгоритм, реализуюш;ий описанный выше подход к выявлению проигрышных полей, работает довольно долго и требует, хотя бы однократно, использовать двумерный массив размерности т х п, где (гаг, га) — начальное положение фишки. При больших значениях /га и га могут возникнуть проблемы, связанные с ограничениями по памяти, да и время заполнения такого массива может стать значительным. Хотелось бы иметь алгоритм заполнения массива проигрышных позиций без предварительного изучения всех позиций игрового пространства. И такой алгоритм есть. Но о нем мы поговорим чуть позже.
Найти стратегию и показать, что она приводит к успеху, далеко не всегда так просто, как в только что рассмотренной игре. Рассмотрим другую игру.
Имеется два набора камней. Игроку за один ход разрешается взять либо любое количество камней из одного набора, либо из двух наборов сразу одинаковое количество камней. Проигрывает тот, кому на очередном ходе будет нечего брать.
1249
Игры и стратегии
Каждую позицию в этой игре естественно описать парой чисел, указывающих, сколько камней осталось в каждом наборе после очередного хода. Попытаемся составить список проигрышных позиций. Первая из них очевидна: (О, 0). Следующая, как нетрудно видеть, (1, 2), а также симметричная ей (2, 1). Затем идет пара позиций (3, 5) и (5, 3). Потом (4, 7) и (7, 4). Далее... Тут приходится задуматься надолго.
Но если задуматься, то можно заметить, что эта игра, по существу, не отличается от предыдущей: каждой позиции (х, у) данной игры мы можем сопоставить положение (х + 1, у + 1) фишки в игре на клетчатом поле. Допустимые действия игрока в каждой из игр в точности соответствуют друг другу. Так что эти две игры можно назвать эквивалентными.
Каждая проигрышная позиция в одной игре в точности соответствует проигрышной позиции в другой. Теперь уже несложно продолжить список проигрышных позиций в игре с двумя кучками камней: (6, 10) и (10, 6), (8, 13) и (13, 8) и т. д.
Такая замена одного процесса (и вовсе не обязательно игрового) другим довольно часто оказывается весьма полезной для исследовательских целей.
Обдумывая рассмотренный пример игры, можно прийти к выводу, что стратегией естественно называть некоторый алгоритм планирования. Это определение годится и для игр с неполной информацией — мы все равно можем (и должны) каким-то образом планировать, какой ход сделать в той или иной позиции. Правда, для таких игр бывает удобным рассматривать не какую-то одну стратегию, а некоторое множество стратегий S, каждая из которых однозначно определяет, какой ход следует выбрать в каждой позиции, возникающей в игре. Для каждой стратегии существует некоторый гарантированный результат игры — это минимальный результат среди всех результатов, которые получаются, если рассмотреть все варианты игры противника при данной стратегии. Дж. фон Нейман (уже известный вам как автор принципов архитектуры ЭВМ) предложил выбирать такую стратегию, которая обеспечивает наибольший гарантированный результат. Такое определение наилучшей стратегии предполагает проведение полного перебора вариантов игры. Однако количество таких вариантов обычно так велико, что с их перебором не может справиться ни человек, ни компьютер. Человек интуитивно отбрасывает неперспективные, по его мнению, варианты. При этом слово «интуитивно» вовсе не является синонимом слова «неосознанно»: человек может руководствоваться вполне четко сформулированными критериями отбора вариантов, но сами эти критерии не являются логически обоснованными. Такие критерии называют эвристиками. Иными словами, можно сказать, что эвристика — это некое правило, сокращающее число потенциальных вариантов перебора. Формализованные эвристики нередко служат основой для создания эффективных
250
алгоритмов, однако надо помнить, что применение эвристик не гарантирует получение правильного результата. Огромна роль эвристик в творчестве. Как отмечал один из величайших математиков А. Пуанкаре, основное в творчестве — это умение обнаруживать полезные комбинации без перебора всех возможных.
0
О
О
Вопросы{и|задания
Почему в игре с полной информацией для построения стратегии можно вместо дерева игры рассматривать множество возникающих позиций?
Что такое эвристика?
В главе 1 учебника для 10 класса говорилось, что способ обработки информации может быть алгоритмическим, а может быть эвристическим. В чем, на ваш взгляд, сходство и в чем различие между эвристическим способом обработки информации и эвристикой?
Рассмотрите игру, описанную в задании 11 к § 57. Составьте список проигрышных позиций для этой игры для всех таких пар (т, п), у которых т + п < 20. (Совет. Позиции удобно изображать точками на координатной плоскости.)
Игра «Ним». Два игрока играют в следующую игру. Перед ними лежат три кучки камней, в одной к камней, в другой т камней, в третьей п камней. За один ход разрешается из любой кучки взять любое количество камней. Проигрывает тот, кто не может сделать очередной ход (т. е. камни кончились). Составьте список проигрышных позиций, если: а) к = 2, т = 4, п = ё; б) к = 3, т = 5, п - 7.
Всем, наверно, известна игра в крестики-нолики на девятиклеточном квадратном поле. Напомним правила. Два игрока по очереди ставят в клетки крестик или нолик — один игрок ставит только крестик, другой — только нолик. Выигрывает тот, кому удастся выстроить ряд из своих трех символов по горизонтали, вертикали или диагонали.
а) Сколько ребер содержит дерево этой игры?
б) Договоримся не различать позиции, которые возникают одна из другой поворотом вокруг центра на 90°, 180°, 270°, а также осевой симметрией относительно горизонтальной, вертикальной и диагональных осей симметрии квадрата. Составьте списки различных позиций, возникающих после каждого хода.
в) Докажите, что у игрока, делающего ход первым, есть стратегия, позволяющая ему не проиграть второму игроку.
а) Два игрока играют в крестики-нолики на доске размером 4x4. Условие выигрыша то же самое — три своих символа в ряду, параллельном стороне квадрата или его диагонали. Исследуйте эту игру по образцу задания 6.
О
1251
Игры и стратегии
б) Два игрока играют в крестики-нолики на доске размером 4x4. Условие выигрыша — четыре своих символа по горизонтали, вертикали или диагонали. Исследуйте эту игру по образцу задания 6.
Q Составьте алгоритм, позволяющий сформировать массив а[1;л; 1:2] проигрышных позиций в игре, описанной в объяснительном тексте этого параграфа, если поле, на котором идет игра, имеет размер к у. т клеток. Для этого вам необходимо оценить число п — возможное количество проигрышных позиций. Проигрышных позиций не может быть больше, чем общее число клеток на поле, поэтому годится число п = кт. Но проигрышных позиций намного меньше, так что организовывать такой большой массив весьма неэкономно. Подумайте, каким может быть наименьшее п. Обоснуйте свою точку зрения.
□Г
§ 59 Инвариант стратегии
в главе 5 вы познакомились с двумя важными инструментами исследования алгоритмов: лимитирующей функцией и инвариантом цикла. Оказывается, что понятие инварианта тоже весьма полезно при изучении выигрышных стратегий. Впрочем, это можно было предвидеть: ведь стратегия обычно выглядит как некий циклический алгоритм перехода от одной проигрышной ситуации к другой. Стратегия, собственно, в том и состоит, чтобы каждый раз создавать противнику проигрышную позицию. Для этого можно просто располагать списком таких позиций (как это и делалось в предыдущем параграфе), а можно попытаться найти такое свойство, которым обладают все проигрышные позиции, но не обладает ни одна выигрышная. Вот такое свойство, неизменное для всех проигрышных позиций, и называют инвариантом стратегии. Знание инварианта стратегии намного эффективнее: ведь количество проигрышных позиций может быть как угодно велико. Но надо уметь находить этот инвариант всех проигрышных позиций. Покажем, как это делается.
Начнем с примера — с игры «Ним». Перед игроками лежат три кучки камней: в одной k камней, в другой т камней, в третьей п камней. За один ход разрешается из любой кучки взять любое количество камней. Проигрывает тот, кто не может сделать очередной ход. Проигрышные позиции для случая ft = 3, т = 5 и п — 7 вы выписали, выполнив задание 56 к § 58. Вот какой список у вас должен был получиться:
(0; 0; 0), (0; 1; 1), (0; 2; 2), (0; 3; 3), (0; 4; 4), (0; 5; 5),
(1; 2; 3), (1; 4; 5), (2; 4; 6), (2; 5; 7), (3; 4; 7), (3; 5; 6).
Мы выписали позиции, расположив внутри каждой из них числа в порядке неубывания. Проигрышными будут и любые по-
1252
зиции, полученные из перечисленных произвольной перестановкой чисел.
Запишем каждое число в двоичной системе. К примеру, для тройки (2; 4; 6), получится так: (010; 100; 110). А теперь выполним поразрядное сложение по модулю 2 чисел этой тройки. Поразрядное значит без переноса единицы в старший разряд. Напомним, что операцию сложения по модулю 2 мы обозначали символом ©. Имеем
010 © 100 © 110 = 000.
Проделайте это для любой позиции из приведенного списка, и вы убедитесь, что в результате всегда будут получаться только нули. Возникает гипотеза, что нами обнаружен инвариант стратегии — поразрядная сумма двоично записанных чисел данной позиции должна быть нулевой.
Как же обосновать нашу гипотезу? Как вообще обосновывать гипотезу, что некоторое свойство Р определяет проигрышные позиции? Для этого надо убедиться в справедливости двух утверждений.
1. Из любой позиции, обладающей свойством Р, можно перейти только в позицию, не обладающую этим свойством (т. е. противник не может перевести вас в проигрышную позицию).
2. Из любой позиции, не обладающей свойством Р, можно перейти в позицию, обладающую этим свойством (т. е. своим очередным ходом вы можете поставить противника в проигрышную ситуацию).
Справедливость первого утверждения для нашей гипотезы почти очевидна. Действительно, уменьшив какое-либо число в позиции, обладающей сформулированным свойством, мы изменим цифру, как минимум, в одном разряде. И следовательно, сумма цифр в этом разряде уже перестанет быть нулем.
Пусть теперь перед нами позиция, не обладающая данным свойством. Рассмотрим самый левый из разрядов, в которых сумма отлична от нуля. Выберем то число из трех, для которого в этом разряде стоит 1, — такое число есть, ибо иначе сумма цифр в этом разряде была бы равна нулю. Перестроим выбранное нами число следующим образом. В каждом разряде этого числа, где сумма отлична от нуля, заменим цифру на «противоположную», т. е. 1 заменяем на 0, а 0 — на 1. Разряды, в которых сумма равна нулю, оставляем без изменения. Получившаяся запись — это и есть то количество камней, которое нам требуется иметь в данной кучке, чтобы получить позицию, удовлетворяющую инварианту. К примеру, для позиции (1; 3; 4) имеем
001 © 011 © 100 = 110.
1253
Игры и стратегии
В результате поразрядного сложения самая левая цифра 1 стоит в первом разряде. Из наших трех чисел в первом разряде цифру 1 имеет число 100. Производим в нем замену цифр: первая цифра заменяется на 0, вторая — на 1, а третья остается без изменений. В итоге получается 010, т. е. число 2 в десятичной системе счисления. Значит, в третьей кучке надо оставить два камня из четырех. Получится позиция (1; 3; 2), проигрышность которой нам уже известна (001 © 011 © 010 = 000).
А вот другой пример — позиция (2; 5; 6). Находим поразрядную сумму:
010 © 101 © 110 = 001.
в записи 001 самая левая цифра 1 стоит в третьем разряде. Из наших трех чисел в третьем разряде цифру 1 имеет число 101. Производим в нем замену цифр: первая и вторая цифры остаются без изменений, а третья цифра заменяется на 0. В итоге получается 100, т. е. число 4 в десятичной системе счисления. Значит, во второй кучке надо оставить четыре камня из пяти. Получится позиция (2; 4; 6), проигрышность которой нам уже известна (010 © 100 © 110 = 000).
После того как найден инвариант, стратегию построить легко: надо всегда для противника создавать позицию, обладаюпдую найденным инвариантом.
Найти стратегический инвариант непросто. Нередко в этом помогают рассуждения, связанные со свойством симметрии. Рассмотрим для примера такую игру.
В каждой клетке доски размером 11 х 11 стоит шашка. За ход разрешается снять с доски любое количество, но не менее двух подряд идуш;их шашек либо из одного вертикального, либо из одного горизонтального ряда. Играют двое, ходы делают по очереди. Выигрывает снявший последнюю шашку. Кто выигрывает при правильной игре?
Выигрывает игрок, делаюш;ий первый ход. Этим ходом он снимает все шашки, стояпдие на вертикали, проходяш;ей через центр доски. После этого конфигурация шашек распадается на две симметричные части: левую и правую. На любой ход второго игрока первый отвечает ходом в другой половине доски так, чтобы сохранялась симметрия расположения шашек. Пока у второго игрока будет возможность сделать ход, у первого игрока также будет возможность хода. А стратегическим инвариантом здесь является осевая симметрия конфигурации игрового материала.
Впрочем, симметрия может применяться не в буквальном, геометрическом смысле, а как некое наводяш;ее соображение. Вот пример еш;е одной игры.
Имеется два одинаковых набора конфет. Каждый из двух игроков по очереди, делая ход, съедает из какого-либо набора любое
1254
количество конфет (после первого хода наборы конфет могут быть разными). Проигрывает тот, кому не удается сделать очередной ход, поскольку конфеты кончились.
Каждая позиция в этой игре после очередного хода какого-либо игрока описывается парой натуральных чисел (т, п), где т — число конфет в первом наборе, ап — число конфет во втором наборе. Начальная позиция описывается парой вида (а, а).
Проанализируем несколько позиций. Ясно, что позиции (О, п) и (тп, 0) выигрышны для игрока, который будет делать ход — он просто забирает все оставшиеся конфеты. А вот позиция (1, 1) для такого игрока проигрышна — он ведь может съесть конфету только из одного набора, после чего его противник выигрывает. И позиция (2, 2) тоже проигрышная — съешь две конфеты, сразу проиграешь, а если съешь одну, то противник съест тоже одну из другого набора, после чего попадаешь в проигрышную позицию (1, 1). Легко теперь догадаться, что любая позиция вида (jc, jc) проигрышная для того, кто в этой позиции будет делать ход: сколько бы конфет ни съесть из одного набора, противник съест столько же из другого. В этом как раз и проявляется некая симметрия ответного хода второго игрока по отношению к ходу первого игрока. Вывод же таков: если игрок, делающий в начальной ситуации ход вторым, придерживается указанного правила, то он выигрывает, как бы ни играл первый игрок. Иными словами, у второго игрока имеется выигрышная стратегия.
Стратегии, в которых инвариантом является симметрия в том или ином смысле, называются симметричными стратегиями.
Вопросы|и|задания
^ Какое свойство позиций называют инвариантом стратегии?
Q Как инвариант стратегии используется для ее построения?
@ Пусть в игре с конфетами наборы первоначально содержат разное количество конфет. Определите, имеется ли в этом случае выигрышная стратегия и если имеется, то для какого игрока.
Q На основе стратегического инварианта игры «Ним» составьте алгоритм игры. (Совет. Для записи действия поразрядного сложения целых чисел используйте операцию ХОР, имеющуюся в большинстве языков программирования. При выполнении этой операции каждое слагаемое автоматически переводится в двоичную систему счисления, поразрядно складывается и результат переводится обратно в десятичную систему счисления.)
Q Обобщение игры «Ним». Пусть имеется s кучек камней. За один ход разрешается из любой кучки взять любое количество камней. Играют
1255
Игры и стратегии
двое; ходы делают по очереди. Проигрывает тот, кто не может сделать очередной ход.
а) Найдите инвариант стратегии и сформулируйте выигрышную стратегию.
б) Составьте алгоритм для обобщенной игры «Ним».
Q Игра «Баше». Имеется кучка из п камней. За один ход разрешается взять из нее не более к камней. Играют двое, ходы делают по очереди. Проигрывает тот, кто не может сделать ход.
а) Выпишите проигрышные позиции для к = 4 и п - 20; для к = 7 и л = 30. У кого из играющих есть выигрышная стратегия в каждом из указанных случаев?
б) Найдите инвариант стратегии и сформулируйте выигрышную стратегию для произвольной пары (к, п).
в) Составьте алгоритм, реализующий игру по найденной вами стратегии.
Q Обобщенная игра «Баше». Имеется кучка из п камней. Играют двое, ходы делают по очереди. За один ход первому игроку разрешается взять из нее не более к камней, второму игроку — не более т камней. Проигрывает тот, кто не может сделать ход.
а) Определите, какой из игроков выигрывает в этой игре, и сформулируйте выигрышную стратегию для произвольной тройки (к, т, п).
б) Составьте алгоритм, реализующий игру по найденной вами стратегии.
На окружности расставлено 20 точек. За один ход разрешается соединить любые две из них отрезком, не пересекающим отрезков, проведенных ранее. Играют двое, ходы делают по очереди. Проигрывает тот, кто не может сделать ход. У какого игрока в этой игре имеется выигрышная стратегия?
Q а) В ряд лежат несколько монет, каждые две соседние монеты касаются друг друга. За ход разрешается брать одну монету или две соприкасающиеся монеты. Играют двое, ходы делают по очереди. Проигрывает тот, кому нечего брать. У какого игрока в этой игре имеется выигрышная стратегия?
б) По окружности лежат несколько монет, каждые две соседние монеты касаются друг друга. За ход разрешается брать одну монету или две соприкасающиеся монеты. Проигрывает тот, кому нечего брать. Выигрывает тот, кто берет последнюю монету. У какого игрока в этой игре имеется выигрышная стратегия?
Ф Перечитайте еще раз условие игры, описанной в задании 10 к § 57. Пусть одна из сторон прямоугольника имеет четную длину. Определите, у какого игрока в таком случае имеется выигрышная стратегия.
Ф Перечитайте еще раз условие игры, описанной в объяснительном тексте § 57.
1256
а) Пусть первоначально в кучке имеется четное число камней. Определите, у какого игрока в таком случае имеется выигрышная стратегия.
б) * Для произвольного начального числа камней в кучке определите в зависимости от этого числа, у какого игрока имеется выигрышная стратегия.
в) * Составьте алгоритм, реализующий игру по найденной вами стратегии.
01
Игра как модель управления
в начале этой главы было сказано, что игра — это модель управления. Чтобы убедиться в этом, достаточно еще раз проанализировать игры, которые рассматривались нами в предыдущих параграфах. Они совсем простые, но в них отражены принципы любой игры — воздействие на некоторую ситуацию двух сторон с целью приведения ее в наиболее благоприятное для себя состояние. А целенаправленное воздействие называется управлением. Действия противника можно рассматривать как внешние факторы. Каждая позиция описывается подходящим набором параметров, изменение которых обусловлено как действием противника, так и управляющим воздействием игрока. Получается схема, изображенная на рисунке 7.5.
Реализация обратной связи — это оценка позиции, сложившейся после хода противника. На основе этой оценки вырабатывается управляющее воздействие. К примеру, в игре с конфетами, описанной в конце § 59, оценивается единственный параметр — равно число т числу п или нет. А управляющее воздействие — съесть из большего набора \т — п\ конфет.
В этой игре оценочная функция описывается совсем просто. Но обычно поиск оценочной функции бывает более сложен. Рассмотрим еще одну игру, которая, наверно, многим хорошо известна, — крестики-нолики. Правила этой игры такие. Два игрока по очереди ставят на квадратном поле из клеток крестик и нолик —
Обратная связь
Рис. 7.5 Игра как модель управления
1257
Игры и стратегии
каждый из них свой символ. Выигрывает тот, кто первым составит сплошной горизонтальный, вертикальный или диагональный ряд заданной длины т из своих символов.
В лабораторной работе № 29 мы научим компьютер играть в эту игру на поле из 9 клеток с длиной выигрышного ряда 3 символа. Для определенности договоримся, что компьютер ставит нолик, а его противник — человек — ставит крестик. Право выбора, кому ходить первым, оставлено за человеком.
Общие принципы того, как это сделать, мы изложили выше. Для каждой позиции вычисляется ее оценка и на основе оценки дается указание, куда поставить очередной нолик. Сейчас мы расскажем, как для игры в крестики-нолики строится оценочная функция и как вырабатывается управляющее воздействие.
Прежде всего уточним, что такое оценочная функция. Вы, изучая школьный курс математики, рассматривали функцию как правило, по которому одному числу из области определения функции однозначно сопоставляется другое число. Правда, в § 35 нашего учебника для 10 класса мы ввели более общее понятие функционального отношения. Напомним, что отношение называется функциональным, если его атрибуты можно разбить на две группы так, чтобы значения одной группы атрибутов однозначно определяли значения другой группы. Иными словами, первая группа атрибутов может рассматриваться как аргумент некоторой функции, а вторая группа определяет значение этой функции. Оценочная функция — это некоторое функциональное отношение, которое сопоставляет набору характеристик, описывающих игровую позицию, набор числовых параметров.
Функциональное отношение удобно представлять себе в виде некоторого преобразователя со входами и выходами (рис. 7.6). На входы подаются значения атрибутов, относящихся к аргументу, а на выходе получаются соответствующие значения атрибутов, являющихся результатом.
Будем и нашу оценочную функцию рассматривать как устройство со входами и выходами. Его входами являются 9 клеток поля. На каждый вход может быть подан один из трех сигналов: «крестик», «нолик» или «пусто». Первоначально на все входы подан сигнал «пусто».
Что является выходами этого устройства? Выходов столько же, сколько и входов, и каждый как бы отвечает за соответствующую клетку. Представим, что на каждом выходе появляется новое число, как только сделан ход человеком, т. е. изменилось состояние одного из входов. Вот этот набор и реализует оценочный блок. Рис. 7.6 Функциональное
Теперь обсудим, какова роль блока вы- отношение как
бора. Фактически он по выработанной преобразователь
в
X ■ X
д JP о
* д
ы
9 Информатика 11 кл.
1258
Рис. 7.7 Игра в крестики-нолики как управление неким устройством
оценке должен указать, в какую клетку поставить очередной нолик. Этим и реализуется управляющее воздействие. Описанный процесс можно изобразить так, как показано на рисунке 7.7.
Блок выбора реализован очень просто: нолик ставится в клетку с наибольшим значением оценочной функции. А вот блок оценивания заслуживает отдельного разговора.
Если клетка уже занята ноликом или крестиком, то в нее нолик ставить нельзя. Поэтому оценим ее числом -1. Все свободные клетки будут иметь неотрицательную оценку.
Для каждой свободной клетки будем рассматривать всевозможные содержащие ее трехклеточные ряды — горизонтальные, вертикальные и диагональные. Для каждого ряда могут встретиться варианты (напомним, что рассматривается ряд, содержащий пустую клетку):
1) в ряду все клетки пустые;
2) в ряду стоит ровно один нолик;
3) в ряду стоит ровно один крестик;
4) в ряду стоит один крестик и один нолик;
5) в ряду стоит два крестика;
6) в ряду стоит два нолика.
Если в ряду уже есть два нолика, то надо немедленно ставить третий и тем самым выигрывать. Так что шестой вариант имеет наивысший приоритет. Если шестой вариант не осуществился, но через клетку проходит ряд с двумя крестиками (пятый вариант), то нолик надо ставить в эту клетку, иначе следующий ход противника приведет к поражению. Если в ряду стоит один крестик и один нолик, то в этом ряду нельзя ни выиграть, ни проиграть. Этот вариант имеет самый низкий приоритет. Осталось упорядочить три первых варианта. Здесь трудно высказать какое-либо определенное мнение о приоритете. Можно, к примеру, считать его одинаковым для всех этих вариантов, а можно присвоить в том порядке, как они перечислены. В первом случае будет реализована оборонительная тактика, а во втором — наступательная.
Перечисленные варианты — это факторы, влияющие на принятие решения об управляющем воздействии. Теперь их действие надо описать числовыми параметрами. Сделаем это так, как показано в таблице 7.1.
1259
Игры и стратегии
Таблица 7. 1
Вариант Оценка
В ряду стоит один крестик и один нолик 0
в ряду все клетки пустые 5
В ряду стоит ровно один крестик 10
В ряду стоит ровно один нолик 15
в ряду стоит два крестика 30
В ряду стоит два нолика 60
Следующий шаг состоит в установлении связей между параметрами, описывающими действие факторов, и выходными параметрами. В нашем случае это значение оценочной функции для каждой клетки. Эту функцию тоже можно построить по-разному. Можно для выбранной клетки взять наибольшее значение по тем рядам, которые проходят через эту клетку. Например, для правой угловой клетки в нижнем ряду в позиции, изображенной на рисунке 7.7, в соответствии с таблицей 7.1 получаем число 10. Можно взять другую функцию — суммировать значения по всем рядам, проходящим через эту клетку. Тогда для той же клетки в той же позиции получается 15. В средней таблице на рисунке 7.7 приведены значения как раз для такой оценочной функции.
Удачно ли составлена таблица 7.1, правильно ли выбрана оценочная функция, иными словами, адекватна ли построенная нами модель, можно узнать, только проведя эксперимент, т. е. поиграв с компьютером в эту игру. Вы займетесь этим, выполняя лабораторную работу, и, может быть, придется внести какие-нибудь коррективы.
Для игр, рассмотренных ранее, можно доказать, что построенная стратегия наверняка приведет к успеху. В игре в крестики-нолики сформулированные правила вовсе не гарантируют получение наилучшего результата. Но их преимущество в том, что они позволяют избежать полного перебора вариантов развития игры. Такие правила, не обоснованные строгими доказательствами, но сокращающие перебор вариантов, как мы уже говорили, называют эвристиками.
В игре может участвовать не два игрока, а большее число. Но с точки зрения построения управления игрой это не имеет принципиального значения: можно считать, что все остальные игроки — это один «коллективный» игрок. Обратите внимание: в игре в крестики-нолики, как и положено в системе с обратной связью, мы не анализировали причины, по которым противник делал тот или иной ход, ставя нолик в какую-либо клетку, мы анализировали
1260
лишь создавшуюся после его хода ситуацию. Поэтому безразлично, кем является второй игрок — человеком, который со своей стороны пытается построить управление игрой, или безрассудными силами природы, подчиненными воздействию случайных факторов.
При этом не возбраняется и даже нередко оказывается полезным при построении оценочной функции учитывать специфику действий противника. Но это означает, что при моделировании требуется учитывать значительно большее число факторов в качестве существенных.
И наконец, отметим, что оценочную функцию вполне можно применять и для игр с неполной информацией, реализуя подход, предложенный Дж. фон Нейманом, о котором мы говорили в § 58.
1|Вопросы!и{задания
О Почему задачу выиграть некоторую игру можно рассматривать как задачу управления?
Q в правиле выбора хода, описанном при рассмотрении игры в крестики-нолики, не сказано, в какую клетку компьютер должен поставить нолик, если максимальное значение оценочной функции окажется не в одной, а в нескольких клетках. Предложите какой-либо способ, устраняющий эту неопределенность, недопустимую для формального исполнителя, каковым является компьютер.
Q Начертите два поля размером 3x3 для игры в крестики-нолики и заполните одно из них значениями первой из описанных в объяснительном тексте оценочных функций, другое значениями второй. Какая из оценочных функций, на ваш взгляд, больше подходит для выбора первого хода компьютером? Ответ обоснуйте.
Q Выполнив задание 6 к § 58, вы подсчитали, сколько ребер имеет дерево игры в обычные в крестики-нолики. Это число едва ли вселило в вас оптимизм строить стратегию, основываясь на таком дереве. Из-за результата выполнения задания 7 из того же параграфа вы могли только еще больше впасть в пессимизм. Поэтому мы предлагаем вам реализовать для этих игр оценочный подход.
а) Постройте модель управления с помощью оценочной функции для игры в крестики-нолики на поле размером 4x4, если по-прежнему выигрывает тот, кто первым составил сплошной горизонтальный, вертикальный или диагональный ряд длины 3 из своих символов.
б) Постройте модель управления для игры в крестики-нолики на поле размером 4x4, если выигрывает тот, кто первым составил сплошной горизонтальный, вертикальный или диагональный ряд длины 4 из своих символов.
1261
Игры и стротегии
О" Игра Реверси. В эту игру играют двое, выставляя по очереди на клетки квадратного поля фишки своего цвета. У одного игрока фишки зеленые, а у другого красные. Размеры поля — 8 х 8. В начале игры в центре поля стоят по две фишки каждого цвета так, как показано на рисунке 7.8. Если при очередном ходе только что поставленная фишка и какая-то другая фишка того же цвета ограничивают ряд фишек противника (этот ряд не должен содержать пустых клеток), то все фишки ряда заменяются на фишки игрока, сделавшего ход (ряд может быть горизонтальным, вертикальным или диагональным). Может так оказаться, что вновь поставленная фишка ограничивает сразу несколько рядов, тогда это правило применяется ко всем таким рядам. Игра заканчивается, когда на поле не осталось свободных клеток. Выигрывает тот игрок, чьих фишек оказалось больше.
К 3
3 к
Рис. 7.8
а) Придумайте оценочную функцию, которая позволяла бы определить, на какое поле нужно поставить фишку при очередном ходе.
б) Составьте алгоритм, который бы реализовывал стратегию игры на основании вашей оценочной функции.
в) Реализуйте ваш алгоритм в виде программы.
~ ^ !^'^"1шгм1ю,пи1:н1гмп1'1.
ОООО i oepooiо OOOOdlblpOQO^Opd#^^OQQOOl
попоодопюоооооол^
Выполнять задания лабораторных работ вы будете в компьютерном классе. Поэтому нелишне епде раз напомнить правила техники безопасности.
1. Если вы обнаружили какую-либо неисправность, немедленно сообщите об этом преподавателю. Не работайте на неисправном оборудовании!
2. Не включайте и не выключайте компьютеры самостоятельно.
3. Не дергайте и вообще не трогайте различные провода.
4. Не стучите по клавиатуре и мышке.
5. Соблюдайте правила охраны здоровья: не работайте за компьютером на расстоянии менее 50 см от монитора, следите за осанкой, в перерывах делайте гимнастику для глаз и опорно-двигательного аппарата.
Каждый раз, приступая к выполнению лабораторной работы, помните и выполняйте эти несложные правила.
Таблица КП. 1
А В С
1 Точки Высота Скорость
2 0 1,5 0
3 A2-I-F3 =Корень(2*9,8*(В2-В3))
4 A3+F3 =Корень(2*9,8*(В2-В4))
... ... ...
... ... ...
9 A8-I-F3 =Корень(2*9,8*(В2-В9))
10 A9-I-F3 0 =Корень(2*9,8*В2)
1263 Компьютерный проктикум
Лабораторная работа № 1 (к § 6)
шат%»Дррвер1ш. ядеи^рртшсти лиададм, ■
в § 6 мы построили модель, позволяющую, как нам кажется, определить оптимальную конфигурацию горки для того, чтобы кататься на ней на санях. Приступим к компьютерной реализации этой модели с помощью электронной таблицы.
таблице КП.1 представлен пример электронной таблицы. Исходными данными служат высота горки h = 1,5 м, длина основания горки 6 м и число точек разбиения п. Для начала возьмем п равным 7 и запишем его в ячейку F2. Таким образом, у нас будет 9 значений высот, которые мы обозначали буквой у с соответствующим индексом. Эти значения будем записывать в столбце В, начиная со второй строки. При этом в ячейку В2 запишется число 1,5 — высота всей горки, а в ячейку В10 — число 0. В ячейки ВЗ — В9 можно пока записать любые числа между 0 и 1,5. В ячейку F3 запишем формулу для вычисления длины каждой из частей разбиения. Столбец С отведем для вычисления значений скорости в конце каждого участка разбиения. В столбцах D и Е запишем формулы для вычисления длины каждого участка и времени спуска по этому участку. (Глядя на формулы, обдумайте, как их записать в таблицу, чтобы было удобно копировать.) В ячейку F1 запишем суммарное время спуска с горки. Теперь наша задача — подобрать такие значения в ячейках ВЗ—В9, чтобы значение в ячейке F1 было наименьшим.
D Е F
Длина участка Время =СУММ(Е2:Е9)
=Корень((В2-ВЗ)^2+Г3^2) =2*D2/(C24-C3) 7
=Корень((ВЗ-В4)^24-РЗ"2) =2*D3/(C3+C4) 6/(F2+l)
=Корень((В4-В5)^2-1-Г3^2) =2*D4/(C4+C5)
... ...
... ...
=Корень((В9-В10)"2-1-ГЗ"2) =2*D9/(C9+C10)
1264
Таблица КП. 2
Номер точки разбиеШа 0 1 2 3 4 5 6 7
Нисота в сточке разбиениа 1,5 0,096145 -0,37637 0
Мы будем делать это, используя специальную программу в Excel — надстройку Поиск решения. Эта прогргияма является дополнительной, поэтому может потребоваться ее установка. Выберите меню Сервис. Если в нем отсутствует пункт Поиск решения, то выберите в нем пункт Надстройки и в появившемся диалоговом окне отметьте галочкой пункт Поиск решения, после чего щелкните на кнопке ОК. Программа установлена, и теперь ее имя появляется в меню Сервис автоматически.
Запустите эту программу. В появившемся диалоговом окне в целевую ячейку запишите адрес ячейки целевой функции (т. е. F1). Затем укажите, чего требуется добиться от целевой функции (в нашем случае минимального значения). Наконец, в окне Изменяя ячейки надо поместить указание на блок ячеек ВЗ—В9 — именно их значения надо менять, чтобы добиться нужного результата. Дополнительных ограничений у нас нет, так что пришла пора щелкнуть на кнопке Выполнить. Через непродолжительное время компьютер отрапортует: Ре-имение найдено — и спросит, сохранить ли полученное решение. Ответьте щелчком на кнопке ОК. В ячейках ВЗ—В9 вы увидите искомые значения промежуточных высот.
Начертите в тетради таблицу по образцу таблицы КП.2 и впишите в нее полученные результаты. С помощью мастера диаграмм постройте график изменения высоты горки (он будет выглядеть, вероятнее всего, так, как показано на рисунке КП.1).
1265
Компьютерный практикум
Однако результаты могут вас разочаровать — появились отрицательные значения высот. Это означает, что придется почти на метр углублять горку. Ясно, что такое решение неприемлемо. Значит, построенная модель неадекватна и, следовательно, не были учтены какие-то существенные факторы.
3 Уточним модель, указав, что высота в любой точке разбиения должна быть заключена в пределах от О до 1,5. Эти условия нужно записать в окне Ограничения. Сделайте это и найдите оптимальное решение для такой модели. Имеющуюся у вас таблицу дополните еще одной строкой и впишите в нее результаты. Постройте график, который покажет вам, как в этом случае будет выглядеть горка.
4 В начале построения модели мы обсудили, что форма горки будет тем ближе к оптимальной, чем больше точек разбиения мы возьмем. Увеличьте количество точек разбиения до 9 и найдите оптимальное решение в этом случае сначала без учета ограничений (вдруг повезет!), а затем с учетом ограничений. Результаты впишите в новую таблицу (теперь в ней должно быть 11 столбцов) и постройте график, демонстрирующий профиль горки. Сравните его с графиком для семи точек разбиения.
5 Выполните ту же работу, взяв сначала 11 точек разбиения, а затем 14. Постройте графики и сравните их. Удобнее сравнивать графики, если они построены на одной и той же области диаграммы. Если вы считаете, что форма горки все еще существенно меняется при увеличении числа точек, продолжите компьютерный эксперимент, увеличивгш количество точек разбиения.
Лабораторная работа N2 2 (к § 8)
Задача о ценообразовании
В § 8 мы почти построили модель, с помощью которой надеемся определить оптимальную цену билетов в кинотеатр. Почти — потому, что осталось ненайденным значение параметра а в формуле для функции fix), показывающей количество проданных билетов по цене х рублей. Мы предлагаем для определения по экспериментальным данным значения параметра а использовать электронную таблицу. Заполнить ее можно, например, так, как показано в таблице КП.З. В ячейке D1 записано значение коэффициента с, а в ячейку D2, отведенную под коэффициент а, мы пока записали наугад взятое число.
1 В столбец Е, начиная со второй ячейки, запишите отклонения расчетных данных от экспериментальных (при заданном значении цены). Так, в Е2 нужно поместить форму-
1266
Таблица КП.З
А В С D E
1 Значение цены Экспериментальные данные Ах) 100
2 0 100 =D1-D2*A2*A2 0,1
3 50 98 =D1-D2*A3*A3
4 80 94 ...
... ...
... ...
10 260 32 ...
11 290 16 =D1-D2*A11*A11
лу =ABS(C2-B2). А в ячейку Е1 запишите формулу МАКС(Е2:Е11). Наша задача - подобрать такое значение параметра а, при котором в Е1 будет наименьшее возможное число. Сделать это можно, применяя, как и в лабораторной работе № 1, надстройку Поиск решения. Только на этот раз значение надо менять не в блоке ячеек, а всего лишь в одной ячейке — D2. Найдите искомое значение параметра а.
2 Теперь можно приступать к решению основной задачи — поиску такого значения цены, при которой выручка будет наибольшей. Для этого надо выделить ячейку для аргумента х и ячейку для подсчета выручки, т. е. значения функции xf(x). Мы предлагаем для х отвести ячейку D3, для значения f(x) — ячейку D4, для значения xf(x) — ячейку D5, т. е. в D5 нужно записать формулу =D3*D4. Снова применяя надстройку Поиск решения, найдите значение х, при котором в ячейке D5 будет максимальное значение.
3 Когда мы провели этот вычислительный эксперимент, у нас получилось 182 р. 70 к. Но давайте обратим внимание на количество зрителей — 67 человек. Может быть, можно кино показывать в меньшем зале и получать максимальную выручку в нем? Ведь и расходы на аренду меньшего зала будут меньше. Измените значение в ячейке D1, записав туда, например, число 70. Проведите вычислительный эксперимент с этим значением (не меняя пока коэффициента а). Окажется, что максимальная выручка снова будет, когда зал заполнится на 2/3. Может быть, дело в том, что коэффициент а остался неизмен-
I 267 Компьютерный практикум
ным? Измените коэффициент а и повторите вычислительный эксперимент. Получился ли у вас другой результат? Вооружившись математическими методами исследования функций, можно доказать, что максимальная выручка всегда будет получаться при заполнении кинозала на 2/3. Однако, как мы говорили в объяснительном тексте § 8, построенная модель годится не только для кинотеатров. Так что, господа будущие бизнесмены, запомните: максимальный доход получается тогда, когда предложение в полтора раза превышает спрос. Впрочем, капиталисты Запада давно это уже знают. Поэтому там вы никогда не увидите переполненный кинозал или забитый до отказа самолет, в любой гостинице найдутся свободные номера, а в кафе — свободный столик.
4 В вопросе 3 к § 8 мы предложили вам подумать о том, какой смысл имеет коэффициент а с экономической точки зрения. Проведите вычисления, меняя значения коэффициента а и наблюдая за изменением оптимальной цены билетов.
Вы обнаружили, что с уменьшением этого коэффициента оптимальная цена возрастает. В жизни, конечно, все наоборот: если человек готов платить за услугу или товар больше, то коэффициент а в нашей модели будет уменьшаться. Иными словами, этот коэффициент отражает изменение покупательной способности населения. Ну, возможно, не всего, а той его части, которая все еще ходит в кино.
Лабораторная работа № 3 (к § 11)
Системы счисления с основанием, равным степени числа 2
В памяти компьютера вся информация кодируется двумя символами. При этом для чисел обычно используют их запись в двоичной системе счисления. Но современные компьютеры (точнее, их программное обеспечение) очень дружески относятся к людям, ими пользующимися, и поэтому всю числовую информацию любезно предоставляют в десятичной системе счисления. Впрочем, по вашему желанию вы можете увидеть представление числа и в двоичной системе. Да и не только в двоичной.
1 Откройте приложение Инженерный калькулятор. На панели, расположенной слева под табло, вы видите трехбуквенные сочетания «Нех», «Пес», «Oct» и «Bin». Это сокращения латинских слов, которые переводятся на русский как «шестнадцатеричный», «десятичный», «восьмеричный» и «двоичный». Речь идет, как вы понимаете, о системах счисления.
1268
По умолчанию включается представление чисел в десятичной системе счисления. Наберите число 19. Переключите калькулятор в режим «Bin». На табло появилось представление этого числа в двоичной системе счисления. Выполняя задание 2 к § 11, вы уже перевели это число в двоичную систему счисления. Сверьте свой ответ с ответом компьютера. Сошлось? Если нет, найдите у себя ошибку.
Переведите в двоичную систему счисления остальные числа из того же задания: 44, 129, 561, 1322. Сверьте результат компьютера со своим.
2 С помош;ью приложения Инженерный калькулятор переведите десятичные числа 19, 44, 129, 561, 1322 в шестнадцатеричную систему счисления. Сверьте компьютерные результаты с теми, которые получены вами.
3 А теперь с помош;ью того же приложения переведите числа 1001, 10101, 111001, 10111101 из двоичной системы счисления в десятичную (задание 3 из § 11). Сравните свой результат с результатом компьютера.
4 С помош;ью Инженерного калькулятора переведите числа 25, 4F, 1А7, АВС, D1AE, FFFF из шестнадцатеричной системы в десятичную (задание 4 из § 11). Сравните свой результат с результатом компьютера.
5 С помош;ью Инженерного калькулятора, а потом без него сложите и перемножьте числа lOlg и llOlg. Сверьте компьютерные результаты со своими.
6 Применять калькулятор для выполнения действий с небольшими числами все равно что стрелять из пушки по воробьям. Найдите сумму чисел 10 457 939 926 978 229 600 и 7 988 804 146 731 322 020, записанных в десятичной системе счисления, с помош;ью Инженерного калькулятора. Запишите полученный результат. (А можете ли вы прочитать каждое из слагаемых, правильно называя разряды и классы?) Теперь с помош;ью того же калькулятора переведите каждое из чисел в двоичную систему счисления. Запишите получившиеся числа и найдите их сумму. Вряд ли вы ожидали увидеть то, что появилось на табло калькулятора. В чем дело? Может быть, калькулятор сломался?
Введите сумму этих чисел, вычисленную в десятичной системе счисления, и переведите ее в двоичную систему. Изменился ли от этого результат?
► Чтобы понять причину наблюдаемого явления, давайте уменьшим второе слагаемое на 10, т. е. возьмем его равным 7 988 804 146 731 322 010. Теперь сложите это число с числом 10 457 939 926 978 229 600. Переведите результат в двоичную си-
1269
Компьютерный практикум
стему. А теперь прибавьте к полученному числу lOlOg — это как раз число 10, которое мы отняли у одного из слагаемых. Теперь стало видно, что сумма просто не уместилась на табло калькулятора — единица старшего разряда оказалась левее, чем это допускает количество мест, отведенных на табло. Такое явление называется переполнением разрядной сетки. Подробнее мы обсудим его в § 23, компьютерный эксперимент проведем в лабораторной работе № 5.
7 Закройте приложение. Лабораторная работа завершена.
* Лабораторная работа № 4 (к § 17)
Коды, обнаруживающие и исправляющие ошибки
Чтобы выполнить эту лабораторную работу, вам надо вспомнить операторы изз^чаемого вами языка программирования, позволяющие обрабатывать символьные переменные. В таблице КП.4 даны обозначения основных операций и функций.
1 Напишите алгоритм, который создает двумерный символьный массив KOD[1:10; 1:2], соответствующий таблице КП.5. Эта таблица реализует код Хэмминга для цифр 0, ..., 9, описанный в § 17 (см. табл. 2.11).
Запрограммируйте этот алгоритм и с помощью этой программы создайте указанный массив.
Таблица КП. 4
Алгоритмы Basic Pascal Пояснения
+ + + Операция соединения (конкатенации) слов
LEN(s) LEN(s$) length(s) Функция, вычисляющая количество символов символьной переменной S
Часть (S, а, Ь) MID$(s$, а. b) COFY(s. a, b) Функция, выделяющая в значении символьной переменной s часть, начинающуюся с символа с номером а и содержащую Ь символов
1270
0 0000000
1 0001111
2 0010110
3 0011001
4 0100101
5 0101010
6 0110011
7 0111100
8 1000011
9 1001100
2 Составьте алгоритм, позволяющий за- Таблица КП. 5 просить натуральное число и закодировать его кодом Хэмминга. Результат кодирования договоримся хранить в символьной переменной.
Запрограммируйте этот алгоритм и отладьте получившуюся программу.
Оформите эту программу как подпрограмму-функцию (процедуру) с именем KODN; ее аргументом является натуральное число, подлежащее кодированию.
► Для проведения дальнейших экспериментов договоримся, что кодировать будем десятизначные числа. Сами эти числа будем получать с помощью датчика случайных чисел (сокращенно ДСЧ). Обычно он выполнен в виде подпрограммы-функции. В алгоритмах функцию получения случайного вещественного числа из промежутка [0; t) мы будем обозначать rand(f). Например, оператор
X := rand(f);
присваивает переменной х случайное значение из промежутка [0; t). Если требуется присвоить случайное значение из промежутка [а; Ь), то можно использовать оператор
X := а + rand(b - а);.
Иногда требуется получить целое случайное число х, удовлетворяющее неравенству х <п, где тип — целые числа. Тогда можно использовать оператор
X := т+ INT(rand(n -Ь 0,5 - ттг));.
Запишем алгоритм получения десятизначного случайного числа в виде подпрограммы-функции:
Функция СЧ: цел
{ знач := 100000000 + INT(rand(899999999,5));
}
После кодирования десятизначного числа кодом Хэмминга получится символьная константа, содержащая 70 символов. Составим алгоритм, вносящий в этот код 6 ошибок, и запишем его тоже в виде подпрограммы функции:
Функция Помехи Гейм: W) : сим
цел: к, т;
сим: Ь;
271 Компьютерный практикум
{ Делать от m := 1 ао 6
{ А: : = 1 + INT (rand(69,5));
Ь : = Часть (W, k, 1)
Если {Ъ = "1") то { Ь := "О”;} иначе { Ь := "1"; }
знач := Часть (W, 1, /г - 1) + Ь + Часть (W, k + 1, 70 - k);
Составим теперь алгоритм кодирования с последующими искажениями:
Функция Искажение кода: сим цел: т; сим: с;
{ т := СЧ;
Сообщить т; (* печать передаваемого числа *)
с •.= KODN(m); (* кодирование числа т кодом Хэмминга)
знач := Помехи (с);
} ◄
0 Запрограммируйте эти алгоритмы и отладьте их. Не забудьте, что для использования датчика случайных чисел его в самом начале программы надо инициализировать.
■Ji Составьте алгоритм, позволяющий для каждой семибитовой последовательности нулей и единиц находить ближайшее к ней слово из кода Хэмминга. Реализуйте этот алгоритм в виде подпрограммы-функции с именем Распознавание и аргументом W символьного типа. Результат также имеет символьный тип.
Составим теперь алгоритм, который имитирует передачу числовых данных с помехами с последующим исправлением ошибок:
Алгоритм Декодирование цел: k, т, п; сим: Ь, d;
{ Ь := Искажение кода; п := О;
Делать от m := О ао 9
{ п := га*10;
d := Часть (Ъ, 1 + 10*т, 10); k := 0;
Делать пока (d Ф КОВ(/г, 2))
{ к ~ к + }
п '.= п + к\
Сообщить п;
1272
5 Запрограммируйте этот алгоритм.
Запустите несколько раз программу и проверьте, совпадает ли исходное число с тем, которое получается после декодирования.
6 Имитируемый нами канал связи весьма слабо защищен от помех — на 70 двоичных символов допускается до 6 ошибок. Поэтому можно ожидать, что иногда декодирование все-таки будет происходить с ошибками. Организуйте эксперимент для статистического определения того, как часто декодирование происходит с ошибкой. Создайте программу, которая позволила бы провести серию из 1000 испытаний; 10 000 испытаний. На основе этих данных оцените надежность такого кодирования.
I Лабораторная работа № 5 (к § 23)
Представление целых чисел в памяти компьютера. Особенности компьютерной арифметики
Выполняя лабораторную работу № 3, вы уже обнаружили явление, которое было названо переполнением разрядной сетки. Это далеко не единственный эффект компьютерной арифметики. Давайте продолжим эксперименты с Инженерным калькулятором.
1 Наберите на табло Инженерного калькулятора отрицательное десятичное число -19. Перейдите в двоичную систему счисления. Как объяснить полученный вами результат? Сколько двоичных разрядов содержит табло Инженерного калькулятора"^ Какое самое большое двоичное число может быть записано на табло Инженерного калькулятора! Переведите это число в десятичную систему счисления.
2 Вычислите с помощью Инженерного калькулятора значения следующих разностей:
а) IIIOIIIOI2 - IIOIIIOIIO2;
б) IIOIIOIOOOI2 - IIIOIOIOOOI2.
Объясните вид получившихся результатов. Переведите каждый из результатов в десятичную систему счисления.
3 Найдите с помощью Инженерного калькулятора сумму IIIIIIIIIIIIIIIIOIIIIIIIIIOIIIO2 + IOIIIIIIIIOIIII2.
Переведите каждое из слагаемых в десятичную систему счисления. Найдите требуемую сумму. Попытайтесь перевести ее в двоичную систему счисления.
4 Переведите (вручную или с помощью Инженерного калькулятора) каждое из чисел из пункта 2 в шестнадцатеричную
I 273 Компьютерный практикум
систему счисления. Выполните над этими числами задание пункта 2 в шестнадцатеричной системе счисления. Объясните получившиеся результаты.
5 Запишите в шестнадцатеричной системе счисления наибольшее число, помещающееся на табло Инженерного калькулятора. Переведите это число в десятичную систему счисления. Совпало ли это число с тем числом, которое вы получили для двоичной системы счисления, выполнив пункт 1 этой лабораторной работы?
6 Закройте приложение. Лабораторная работа завершена.
* Щ Лабораторная работа № 6 (к § 24 и 25)
Представление вещественных чисел в памяти компьютера. Особенности компьютерной арифметики
Мы начнем с представления чисел с плавающей запятой, записанных в десятичной системе счисления, в приложениях Калькулятор и Инженерный калькулятор.
1 Запустите приложение Калькулятор, выбрав для него вид Обычный. Нажимая несколько раз клавишу с цифрой 1, выясните, сколько разрядов имеет этот калькулятор для чисел с фиксированной запятой. Умножьте набранное вами число на 10. Объясните высветившийся на табло результат операции.
В дальнейшем мы будем экспериментировать с получившимся числом, поэтому запишите его в память калькулятора.
2 К полученному числу прибавьте число 3. Объясните получившийся результат.
3 Возведите полученное число в квадрат (для этого достаточно нажать клавишу «*», а затем клавишу «=»). Придумайте, как можно выяснить наивысшее значение порядка, допустимое в данном калькуляторе. Найдите значение этого порядка.
4 Требуется вычислить значение
3,1 • 10^®^ X 7,6 • 10““ Х2,8 • 10”®^
К какому виду нужно привести сомножители (каким должен быть порядок чисел?), чтобы получить требуемый результат? Произведите эти вычисления.
5 Наберите число 0,101. Возведите полученное число в квадрат. Полученный результат еще раз возведите в квадрат и т. д. После нескольких повторений таких действий на табло появится 0. Объясните этот результат.
10 Информатика Икл.
1274
6 Найдите наименьшее (отрицательное) значение порядка, допустимое в данном калькуляторе.
7 Требуется вычислить значение
3 1 . 10-200 X 2,6 • X 7,8 • 10®".
Каким будет результат, если вычисления производить на обычном калькуляторе с указанным в данном выражении порядком? Проверьте свою гипотезу. С каким порядком надо производить вычисления, чтобы получить правильный результат? Получите этот результат.
8 Выберите вид Инженерный. Калькулятор в этом виде имеет специальную клавишу для перехода от записи числа с фиксированной запятой к записи в нормализованном виде и обратно. На этой клавише написано F-E. Щелкнув по этой клавише правой кнопкой мыши, вы получите подсказку, в которой указано, для каких чисел Инженерный калькулятор автоматически переходит из режима с фиксированной запятой в режим с плаваюш;ей запятой.
Проверьте справедливость утверждения, сформулированного в этой подсказке. Какое наибольшее число разрядов допускает Инженерный калькулятор для чисел с фиксированной запятой?
9 В задании 8 из § 25 приведены два алгоритма решения одной и той же задачи. Запрограммируйте каждый из этих алгоритмов на изучаемом вами языке программирования. Отладьте программы на малых значениях N. Проверьте, действительно ли при N = 1 000 000 000 эти программы дают разный результат. Найдите наибольшее N, для которого программы дают одинаковый результат.
10 Математики доказали, что сумма
Ц---Ь--Ь —-ь—-ь—-ь—-ь
2 3 4 5 6 7 "• N
становится как угодно большой при неограниченном увеличении N. Поставим задачу найти такое N, при котором указанная сумма станет больше 20. Можно попытаться сделать это с помош;ью следующего алгоритма:
Алгоритм Поиск цел: N-, вещ: S',
{ S := 1;
N '.= 1;
1275
Компьютерный проктикум
}
Делать пока (S < 20)
{ N :=N + 1;
S := S + 1/N;
}
Сообщить N;
(*конец цикла*)
Запрограммируйте этот алгоритм и попытайтесь с помощью составленной вами программы найти N.
Скорее всего, вас постигла неудача — программа безостановочно работает, не выдавая ответа. Попытайтесь объяснить, почему произошло зацикливание программы.
11 Поменяйте константу 20 на меньшую, например на константу 10. Какое N сообщает программа для этой константы? Сообщим, что для константы 20 значение N приближенно равно квадрату значения N, полученного для константы 10. Подтверждает ли эта информация вашу гипотезу о причине зацикливания программы для 20?
12 Попытайтесь найти наибольшее значение константы, при котором алгоритм еще не зацикливается.
“ Ц Лабораторная работа N2 7 (к § 26)
Создание текстовых информационных объектов
Выполняя задание 11 к § 26, вы выбрали литературное произведение. Ваша задача — составить и оформить подробный план этого произведения. Прежде всего определим уровень детализгщии. Вы знаете, что в литературном произведении каждый абзац обладает свойством логической завершенности. Поэтому самый нижний уровень детализации, представленный в вашем будущем плане, — это заголовок для абзаца. В свою очередь, несколько соседних между собой абзацев могут быть объединены в группу, которая также обладает неким логическим единством. Для них естественно иметь свой пункт плана более высокого ранга, нежели для абзацев, и т. д.
1 Наметьте не менее трех уровней в вашем будущем плане и приступайте к реализации. Получившийся у вас план должен иметь структуру многоуровневого списка (рис. КП 2).
► Чтобы создать такой список, надо сначала воспользоваться кнопкой Нумерованный список. Чтобы создать в этом списке элементы разного уровня, надо установить курсор в начало строки и нажать клавишу Tab. Это переведет элемент списка на следующий уровень. И каждое нажатие клавиши Tab будет переводить элемент
1276
Заголовок произведения
1. Заголовок первой части
а. Заголовок первой группы абзацев
♦ Заголовок первого абзаца
♦ Заголовок второго абзаца
♦ ...
б. Заголовок второй группы абзацев
♦ Заголовок первого абзаца
♦ Заголовок второго абзаца
в.
2. Заголовок второй части 3....
Рис. КП.2 Многоуровневый список
списка на следующий уровень. Правда, может оказаться, что символы нумерации и маркировки будут совсем не те, какие вы планировали. Чтобы поменять их, нужно в меню Формат выбрать пункт Список, а в открывшемся диалоговом окне выбрать режим Многоуровневый. Кнопка Изменить в окне этого режима позволит вам в диалоге с компьютером сформировать список таким, каким вы бы хотели его видеть. Л
2 С помощью режима Многоуровневый добейтесь того, чтобы ваш план выглядел так, как показано на рисунке КП.2.
3 Поэкспериментируйте с этим режимом и выберите такой вариант оформления, который вам больше всего нравится. Обсудите с одноклассниками ваше решение. Для большей выразительности можете использовать шрифтовые выделения.
4 Выберите кегль, межстрочный интервал и формат страницы таким, чтобы ваш план занимал не менее двух страниц. Впрочем, так оно, скорее всего, и будет, если выбрать кегль 14 пунктов и полуторный интервал между строками.
5 Включите автоматическую нумерацию страниц. Обсудите с одноклассниками, следует ли ставить номер на первой странице.
6 Создайте верхний колонтитул. Для этого воспользуйтесь пунктом Колонтитулы в меню Вид. Сделайте так, чтобы на
I 277 Компьютерный практикум
четных страницах стояла ваша фамилия, а на нечетных — заголовок «План
Создание информационного текстового объекта закончено. Сохраните его в виде файла.
7 Теперь создайте еще один информационный объект. Попытайтесь, используя составленный вами план, передать в 3— 4 строках содержание произведения. Как следует, по вашему мнению, назвать созданный вами информационный объект? Подберите для него подходящий шаблон документа.
8 Еще раз просмотрите составленный вами план. Постарайтесь для каждого пункта, отмеченного маркером (т. е. для каждого абзаца исходного текста), подобрать одно слово — имя существительное, — которое, на ваш взгляд, отражает суть этого пункта. Составьте из этих слов сплошной текст, разделив их точкой. Как бы вы озаглавили получившийся информационный объект? Сохраните созданный вами объект в файле с подходящим именем.
9 Выполните такое же задание, подбирая для каждого абзаца характеризующий его глагол. Как, по вашему мнению, можно озаглавить такой информационный объект? Сохраните созданный вами объект в файле с подходящим именем.
” Ц Лабораторная работа N2 8 (к § 27)
Вставка объектов в текст
Выполнив лабораторную работу № 7, вы создали текстовый информационный объект — план художественного произведения. Усовершенствуем этот объект.
1 Создайте таблицу по образцу таблицы КП.5.
2 В правом столбце в ячейке той же строки, где стоят маркированные пункты плана, запишите цитату из произведения, которая, на ваш взгляд, наиболее точно отражает содержание этой группы абзацев.
3 Посмотрите, соответствует ли смысл цитаты заголовку группы абзацев. Если не соответствует, то скорректируйте заголовок группы абзацев.
4 Сохраните получившийся информационный объект под другим именем.
► А теперь от литературы перейдем к физике и создадим небольшой справочник законов и формул. Такой справочник тоже удобно оформить в виде таблицы. Например, такой, как таблица КП.6. ■Ч
■ 278
Таблица КП. 6
План Цитата
1. Заголовок первой части
а. Заголовок первой группы абзацев
♦ Заголовок первого абзаца ♦ Заголовок второго абзаца ♦ ...
б. Заголовок второй группы абзацев
♦ Заголовок первого абзаца ♦ Заголовок второго абзаца ♦ ...
в. ...
2. Заголовок второй части
5 Создайте таблицу КП. 7 в текстовом процессоре Word. В эту таблицу вы можете добавить еще несколько формул, которые вам лично интересны.
Таблица КП. 7
На
п/п
Название
закона
Основная
формула
Производные
формулы
1
Закон всемирного тяготения Нькэтона
_ J7^
F = k
R = Jk
Закон Кулона
- ьШя.
F = k
■ Ч1Ч2
Закон теплообмена
Q = entity-
^ cm 1
Первое начало термодинамики для одномолекулярного газа
Ч Ч''
2 Ц2-Щ
vR
Релятивистское изменение массы
т — -
1--
v = cjl-
Щ) т V 7
1279
Компьютерный практикум
* Щ Лабораторная работа № 9 (к § 28)
Создание гиперссылок в тексте
Таблица с планом и сопровождающими его цитатами весьма удобна, если затем по этому плану писать сочинение. Но как самостоятельный информационный объект такая таблица выглядит не очень изящно. Хорошо бы и план не перегружать дополнительной информацией, и цитаты подтверждающие получать, как только в них возникнет потребность.
Поступим так. Создадим отдельный файл с цитатами. Затем в файле с планом произведения создадим гиперссылки на цитаты. Как только потребуется цитата, достаточно будет щелкнуть по гиперссылке. Приступим к реализации этой идеи.
1 Загрузите файл с таблицей, содержащей цитаты. Выделите цитаты из таблицы (для этого можно в меню Таблица воспользоваться пунктом Преобразовать таблицу в текст). Соберите их в отдельный документ и сохраните его.
2 Загрузите файл с планом, составленным вами во время выполнения лабораторной работы № 7.
3 Для каждого заголовка группы абзацев создайте закладку и свяжите ее гипертекстовой ссылкой с соответствующей цитатой.
4 Проверьте, как работают созданные вами гиперсвязи.
5 А теперь таким же способом создайте гиперсвязи между подборкой существительных, которую вы записали во время лабораторной работы № 7, и заголовками абзацев в плане произведения.
” Ц Лабораторная работа № 10 (к § 29 и 30)
Знакомство с HTML
Выполняя эту работу, вы создадите свою первую HTML-страницу. Тема не так уж важна. Это может быть ваш класс, город или просто ваша личная страница. Продумайте, что вы хотите поместить на первой странице, а что будет на следующих.
На первой странице можно расположить следующую информацию:
• название; • мой класс (переход на 2-й уровень);
• девиз; • мои интересы (переход на 2-й уровень);
• о себе; • мое фото.
1280
Вы можете расширить этот список или убрать из него что-то по своему вкусу. Для удобства полезно около каждого пункта пометить, какими командами языка HTML вы будете пользоваться для его создания. Не забудьте, что подобные страницы преследуют чисто информационные цели, и, как правило, ни к чему демонстрировать изощренные технологии и громоздкие ненужные красивости. Составленный вами план, пусть даже очень краткий, оформите и сохраните в виде текстового файла.
А теперь приступим к его реализации. Для оформления страницы вам понадобится графический файл с какой-нибудь картинкой, которая на вашей странице станет фоном, какая-нибудь фотография, относящаяся к теме страницы.
1 Создайте собственный каталог и скопируйте в него файлы с картинкой и фотографией. (Ниже мы условно назвали эти файлы как KLEN.GIF и DEER.JPG. У вас они, скорее всего, будут иными.)
2 С помощью Блокнота создайте текстовый файл следующего содержания:
Моя первая страница
Добро пожаловать на страничку В>
3 Сохраните текстовый файл с расширением НТМ или HTML.
4 Посмотрите, как выглядит ваша страница в окопе браузера.
5 Пользуясь описанием тегов, приведенных в учебнике, добавьте на страницу надписи, выполненные разными видами шрифтов и различным цветом.
6 Добавьте на страницу еще несколько картинок.
7 Поэкспериментируйте с атрибутами и . Что произойдет, если попытаться применить их одновременно?
|281
Г.
Компьютерный практикум
Лабораторная работа № 11 (к § 31 и 32)
Использование тега <ТоЫе> для формирования HTML-страницы. Использование документов, подготовленных в Microsoft Word?
Расположите на своей странице любые две картинки или фотографии так, как на рисунке 3.6, с учетом требований задания 4 из § 31.
Реализуйте проект, намеченный вами в лабораторной работе № 9. Используйте таблицу для того, чтобы аккуратно разместить в нем ссылки и другую информацию.
Разместите на одной из ваших страниц какой-либо подготовленный в документе Word. Сделайте это двумя способами: используя технологию ActiveX и путем преобразования документа в HTML-формат. Сравните работу браузера в обоих случаях.
Оцените, насколько удачным получился HTML-документ, созданный в автоматическом режиме. Если необходимо, подправьте его, добавив фон и другие элементы оформления.
^ Ц Лабораторная работа № 12 (к § 34)
Знакомство с Adobe Photoshop
Взаимодействие любого программного продукта с пользователем определяется интерфейсом этого продукта. Поэтому освоение Adobe Photoshop мы предлагаем начать со знакомства с его интерфейсом, с тем, как осуществляется доступ к функциям программы посредством выбора команд в меню или нажатием комбинаций клавиш на клавиатуре.
1 Загрузите Adobe Photoshop.
^ Окно программы имеет типовое для Windows оформление.
Панель Инструменты состоит из кнопок. Щелчок по кнопке включает соответствующий ей инструмент. Если на кнопке, имеющей внизу маленький треугольник, подольше подержать мышь с нажатой клавишей, то появится всплывающая панель с кнопками дополнительных родственных инструментов.
Панель Параметры, располагающаяся в верхней части экрана, служит для настройки параметров используемого в данный момент инструмента.
1282
Основной цвет
Установка цветов по умолчанию
Рис. КП.З Переключатель основного и фонового цветов
Переключение основного и фонового цветов
Фоновый цвет
В панели инструментов находятся образцы основного и фонового цветов (рис. КП.З). По умолчанию это черный и белый цвета. Образец основного цвета на верхнем квадрате. Этим цветом закрашивают точки изображения команды заливки и инструменты рисования. Фоновым цветом закрашиваются точки после удаления фрагментов изображения. Двунаправленная изогнутая стрелка в верхнем правом углу около этих квадратов позволяет поменять образцы местами.
В любой момент вы можете произвольно менять основной и фоновый цвета. Возврат к цветам по умолчанию — щелчок по кнопке слева в виде двух маленьких квадратиков черного и белого цветов.
На рабочем поле редактора (по умолчанию в его правой части) располагаются палитры. Палитры — это диалоговые окна, предназначенные для задания параметров и выбора режимов работы. В одном диалоговом окне может быть несколько вкладок — отдельных палитр. Переход между ними осуществляется щелчком по ярлыку с названием. Вызов палитры или их удаление с рабочего поля осуществляется командами из меню Окно.
Кнопки режимов окна программы в нижней части панели инструментов доступны, если имеется открытый документ. Левая предназначена для возврата в привычный стандартный вид окна программы. Две другие открывают окно программы на весь экран, эти режимы работы удобны для просмотра больших рисунков или рисунков в увеличенном масштабе.
Для создания рисунка используют команду меню Файл / Новый. В открывшемся диалоговом окне задают размеры листа, разрешение, цветовой режим, цвет фона. Для редактирования уже готового рисунка используют команду меню Файл / Открыть. Для получения изображения со сканера или цифровой фотокамеры — команду меню Файл / Импорт.
В Adobe Photoshop существует несколько способов выбора текущих цветов.
1-й способ. Выбор основного цвета в палитре Образцы осуществляется щелчком левой клавишей по выбранному цвету, а выбор фонового цвета — Ctrl -I- щелчок левой клавишей.
1283
Компьютерный практикум
2- й способ. В палитре Цвет сначала выберите редактируемый цвет (основной или фоновый). Квадрат редактируемого цвета будет очерчен двойной рамкой. Грубый выбор цвета осуществляется щелчком левой клавишей в нижней цветовой полосе, затем с помощью движков производится точная настройка цвета.
3- й способ. Выбор цвета на рисунке выполняется непосредственно на изображении при помощи инструмента Пипетка — .
Щелчок левой клавишей по выбранному цвету в изображении меняет основной цвет на заданный, а щелчок левой клавишей при нажатой клавише Alt меняет цвет фона.
4- й способ. Щелчок по образцам основного или фонового цвета в панели инструментов (см. рис. КП.З) выводит на экран палитру соответственно для выбора основного или фонового цвета.
2 Создайте какой-нибудь несложный рисунок при помощи различных инструментов для рисования. Восемь пиктограмм рисующих инструментов расположены единой группой, второй сверху.
► Любой выбранный инструмент перед использованием необходимо настроить с помощью кнопок и раскрывающихся списков на панели Параметры. Например, вы можете выбирать размер и форму кисти в раскрывающемся списке Кисть (рис. КП.4), в нем справа имеется кнопка вызова меню для настройки этой панели и формы кистей. Таким же образом на панели Параметры можно выбрать режим, прозрачность и нажим инструмента кисть. -4
3 Поэкспериментируйте с различными формами кисти и режимами наложения цветов. При затруднениях поищите ответы в справочной системе программы.
► Если что-то не понравилось, напоминаем, что последнее выполненное действие всегда можно отменить командами меню Редактирование / Отменить.
■ • • • • •
• » • • • •
¥ □ “S" 32 • 34 • 40 • 43
; 52
Кнопка вызова меню
А
Рис. КП.4 Панель Форма кисти
1284
Название кисти
ш
ОК
Имя:
Узорная кисть 1
Отмена
126
Рис. КП.6
Можно создать собственную кисть. Вот как это делается.
1 Нарисуйте кистью или карандашом (создавая отрезки щелчками левой клавишей при нажатой клавише Shift) простую фигуру (рис. КП.5).
2 Создайте вокруг нее прямоугольное выделение.
3 Выполните команду меню Редактирование / Определить установки кисти... В открывшемся диалоговом окне можно набрать произвольное имя кисти и оценить создаваемый элемент слева в поле просмотра (рис. КП.б). Число в поле просмотра означает размер кисти.
4 Создайте кисть. Порисуйте созданной кистью (рис. КП. 7). Можете сохранить созданную кисть в составе существующего комплекта кистей или создать новый комплект из ваших собственных кистей, открыв список кистей и выбрав в меню настроек формы кистей команду Сохранить кисти. Восстановите стандартный набор кистей командой Восстановить кисти.
Попробуем создать что-нибудь полезное.
5 Обратившись к меню Файл / Новый, создайте новый рисунок. Задайте его характеристики: Размер’. 10 х 10 см; Разрешение’. 28 пикс/см (или, что то же самое, 72 пикс/дюйм); Цветовой режим: RGB; Содержимое фона: Белый.
Рис. КП.7 Рисунок созданной кистью
1285
Компьютерный практикум
■ J Прямоугольник Г') Эллипс
с=з Одиночный столбец
п
[J Одиночная строка
М
М
Рис. КП.8 Простые инструменты выделения
Рис. КП.9
► А теперь поговорим об инструментах выделения, которыми вы будете пользоваться неоднократно. В Adobe Photoshop имеется целый набор инструментов и функций, которые позволяют не только выделять фрагменты, но и выполнять определенные действия над ними.
При удержании мыши на верхней левой кнопке в панели инструментов открывается панель с простейшими инструментами выделения (рис. КП.7). Однократный щелчок в ней выбирает (активизирует) инструмент.
Если выбрать инструмент выделения Прямоугольная область и задать на панели Параметры параметру Стиль значение Нормальный, а параметру Растушевка значение О рх, то можно при нажатой клавише мыши выделить фрагмент произвольного размера, протягивая мышь по диагонали выделяемой области. Созданную область можно затем перемещать по листу, установив курсор мыши внутри этой области и перемещая его при нажатой левой клавише мыши. Сказанное справедливо, если на панели Параметры включен режим Новая выделенная область.
Значение параметра Растушевка определяет четкость граничных линий, отсутствие размытия границ. При увеличении значения этого параметра границы прямоугольной области будут скруглены, а при ее закрашивании края будут размыты. Ненулевое значение параметра Растушевка позволяет смягчить границы выделенной области, с тем чтобы сделать менее резким и заметным переход между изображением в выделенной области и окружающим рисунком. Особенно это важно при вклеивании изображения из другого рисунка.
Если для параметра Стиль выбрать значение Фиксированный размер, то необходимо указать ширину и высоту инструмента выделения в пикселях. Каждый раз область выделения указанного размера будет строиться автоматически.
1286
6 Задайте основной цвет зеленый, а фоновый — белый.
7 Выберите инструмент выделения Овальная область и задайте для него следующие параметры: Растушевка: О рх; Стиль: Нормальный, для параметра Сглаживать поставьте галочку.
8 Нарисуйте область выделения в виде окружности, для этого во время рисования нужно держать нажатой клавишу Shift.
9 Выберите инструмент Градиент т. Задайте для него следующие параметры: Вид градиента: Радиальный градиент; Режим: Нормальный; Непрозрачность: 100%, для параметра Инверсия поставьте галочку. Проведите курсором мыши изнутри круга к его границе, нажав левую клавишу мыши. У вас должен получиться зеленый шарик (рис. КП.9).
Если для параметра Инверсия галочка не поставлена, то нужно в качестве основного цвета выбрать белый, а в качестве фонового — зеленый.
10 Уменьшите размер рисунка, использовав команду меню Изображение / Размер изображения... В открывшемся диалоговом окне Размер изображения измените показанные ширину и высоту до 1 см.
11 Сохраните рисунок.
► Получился хороший элемент для оформления, например, списка или кнопки. А
Лабораторная работа N9 13 (к § 34) Работа со слоями
Для выполнения действий над слоями имеется специальная палитра, вызов которой осуществляется через команду меню Окно / Слои. В палитре имеется список слоев с их уменьшенными изображениями. Справа от изображения — название слоя. Редактировать можно только один активный слой. Его строка в палитре подсвечена синим цветом. Для активизации другого слоя следует щелкнуть по строке с его названием в палитре.
Вы будете редактировать уже готовые изображения. Поэтому надо иметь два-три файла с рисунками или фотографиями. Начнем с простого задания — создадим вокруг имеющегося рисунка романтический фон.
1287
Компьютерный практикум
Рис. КП.10 Выделение области
1 Откройте файл с каким-либо рисунком или фотографией.
2 Выберите инструмент выделения Эллипс. На панели Параметры задайте: Растушевках 15 пике; Стиль: Нормальный, для параметра Сглаживать поставьте галочку.
3 Постройте эллиптическую область выделения на фотографии, перемещая мышь при нг1жатой левой клавише по диагонали воображаемого описанного прямоугольника (рис. КП. 10).
4 Скопируйте выделение в буфер через меню Редактирование / Скопировать.
5 Создайте новый рисунок размером не менее размера фотографии. (Истинный размер фотографии можно посмотреть, использовав меню Изображение / Размер холста...) При создании задайте следующие характеристики: Разрешение: 72 пикс/дюйм, Цветовой режим: RGB; Содержимое фона: Белый.
6 Выберите основной цвет (например, зеленый).
7 Выберите инструмент Заливка и закрасьте лист.
1288
Рис. КП.11
8 Вызовите на экран палитру слоев (Окно / Показать слои).
9 Выполните команду меню Редактирование / Вклеить.
10 Получилось изображение сложной структуры (рис. КП.11). Объедините все его элементы на одном листе — одном слое командой меню Слой / Объединить видимые.
11 Сохраните рисунок, используя команду меню Файл / Сохранить..., в открывшемся диалоговом окне задайте Имя файла (например, рисунок 1). В поле Тип файлов выберите формат сохранения jpeg (*.jpg, *.jpe).
12 В открывшемся диалоговом окне Параметры JPEG задайте характеристики сохранения: Качество: 5 (среднее); Разновидность формата". Baseline Optimized («Оптимизированный»).
13 Определите размер получившегося файла.
14 Используя механизм слоев, попытайтесь сделать вид из окна. Для этого именно контуры окна должны быть созданы в отдельном слое.
1289
Компьютерный практикум
" Ц Лабораторная работа N° 14 (к § 35)
Редактирование фотографий
Поработаем теперь над улучшением цифровой фотографии.
1 Загрузите файл с фотографией, требующей редактирования.
2 Измените яркость рисунка командой Изображение / Коррекция / Уровни... Посмотрите, как изменяется фотография.
► Рисунок можно отретушировать, для этого можно использовать несколько способов. Вот два из них.
1- й способ. Выберите инструмент ?м1 Палец, настройте его параметры: Кисть: 13 пике.; Режим: Нормальный; Интенсивность: 50%. Протяжкой мыши по отдельным участкам определенного цвета уберите чрезмерную резкость рисунка.
2- й способ. Выберите инструмент Многоугольное лассо. Перемещая мышь вдоль граничной линии и щелкая левой клавишей в точках изгиба, получите выделение корректируемой области. Примените к выделенной области фильтр (меню Фильтр / Резкость).
3 Отретушируйте свою фотографию.
► Возможно, вас все еще не устраивает качество изображения. В этом случае можно воспользоваться гамма-коррекцией. Она служит для настройки тонального изображения на отдельных участках цветового диапазона. Гамма-коррекцию осуществляют в диалоговом окне, вызываемом командой меню Изображение / Коррекция / Кривые...
В появившемся диалоговом окне Кривые изображен график, на котором по горизонтальной оси отображаются входные значения яркости, а по вертикальной — выходные. Первоначально это прямая линия. Коррекция осуществляется установкой нелинейной зависимости, в результате которой некоторые участки входного диапазона яркостей сужаются в выходном диапазоне и за счет этого происходит расширение других участков. Проблема состоит в определении этих участков.
Чтобы определить расположение участка, который следует корректировать, нужно при открытом окне Кривые установить курсор мыши на исправляемый участок, перемещать по нему мышь при нажатой левой клавише. При этом на графике по линии будет перемещаться кружочек, показывающий тональный диапазон этого участка рисунка.
1290
Щелчками на линии устанавливаются предельные точки изменяемого диапазона. Можно зафиксировать до 15 точек. Лишние точки удаляются перемещением их по линии за пределы графика. Для корректировки диапазона нужно щелкнуть в центре диапазона на линии и при нажатой левой клавише переместить ее в нужном направлении до достижения приемлемого результата. У вас может получиться, например, такая кривая, какая показана на рисунке КП. 12. А
4 Выделите редактируемый участок при помощи любого инструмента выделения. Настройте тональность изображения, используя гамма-коррекцию.
5 Сохраните отредактированную фотографию в формате jpeg.
6 Задайте в режиме гамма-коррекции какой-либо экзотический график, например с несколькими разрывами. Посмотрите, как это отразилось на выделенном фрагменте изображения. Такие парадоксгшьные соединения красок тем не менее могут быть использованы для создания декоративных полотен.
Кривые
ш
ок
Сброс
Загрузка...
Сохранение..
Плавный
Опции...
1^ Предпросмотр
Рис. КП. 12 Окно режима гамма-коррекции
1291
Кодирование информации. Представление информации в памяти компьютера
“ Щ Лабораторная работа № 15 (к § 36)
Создаем презентацию в PowerPoint
Выполнив задание 5 из § 36, вы реализовали первый этап разработки презентации. Теперь очередь за следующими этапами.
1 Подготовьте в каком-либо графическом редакторе иллюстрации для вашей будущей презентации.
2 Создайте последовательно слайды и определите порядок их появления в презентации.
3 Выполнив задание б из § 36, вы подготовили проект рекламы некоторого продукта. Создайте эту рекламу с помощью PowerPoint. Устройте конкурс получившихся реклам среди своих одноклассников.
4 Создайте «Живую азбуку» для первоклассников. Здесь вы в полной мере сможете проявить свои навыки работы в Adobe Photoshop, комбинируя рисунки, фотографии, текст.
* Ц Лабораторная работа № 16 (к § 37 и 39) сайту ;. Знакомимся с компьютерные сетями,
Начиная с этой лабораторной работы, вы будете работать с сетевыми ресурсами. Мы не рекомендуем вам самостоятельно (без указания учителя) изменять настройки сети, добавлять или удгьлять ее компоненты, изменять их свойства. Нарушение этих правил может привести к отключению вашего компьютера от сети и другим неприятностям.
Выберите одну из ваших папок на том компьютере, где вы работаете. Например, это может быть папка с проектом «Живая азбука», который вы разрабатывали на предыдущей лабораторной работе. Щелкните правой клавишей мыши и в появившемся контекстном меню выберите пункт Общий доступ и безопасность... (можно выбрать пункт Свойства, а затем в появившемся окне выбрать закладку Доступ). Установите флажок в окошке «Открыть общий доступ к этой папке». Если при этом вы хотите, чтобы файлы этой папки могли обрабатываться другими пользователями сети, то установите флажок в окошке «Разрешить изменение файлов по сети». Но в целях безопасности мы не советуем вам это делать. После установки всех параметров доступа значок объекта несколько меняет свой облик —
1292
внизу появляется изображение руки. Это означает, что данный объект является общедоступным для других пользователей сети.
Поскольку вы делаете лабораторную работу все вместе, то теперь можно посмотреть содержание доступных папок на других компьютерах сети. И не надо перемещаться от компьютера к компьютеру, чтобы сравнивать созданные вами проекты.
► Теперь познакомимся с тем, как «чувствует» себя ваш компьютер в глобальной сети Интернет. Вы уже знаете, что во время работы в Интернете вашему компьютеру присвоен уникальный 1Р-адрес. Сейчас вы узнаете, какой именно. Для версий Windows NT/2000/XP нужно предпринять следующие действия.
2 В меню Пуск выберите строку Выполнить и в появившемся окне введите символы cmd. В результате запустится программа Командная строка — это служебная программа для наблюдения и настройки компьютера и сети. Если в появившемся окне ввести команду ipconfig, то вы увидите полную информацию о подключении к Интернету, в том числе и IP-адрес вашего компьютера. Вполне возможно, что вы увидите не постоянный, а динамический 1Р-адрес, и при следующем подключении к Интернету он окажется иным.
^ Обычно к Интернету подключается не один отдельно взятый компьютер, а некоторая локальная сеть, в которую входит ваш компьютер. Тогда естественно, чтобы IP-адреса всех компьютеров такой сети образовывали некий единый блок. Чтобы выделить некоторое множество адресов для одной локальной подсети, используют маски IP-адресов. Посмотрите еще раз на экран вашего компьютера с информацией о подключении, и вы увидите слова «Маска подсети». Она имеет такую же структуру, что и 1Р-адрес. Если записать маску в двоичном коде, то получится 32-символьное двоичное число. Те биты, где в маске стоят единицы, являются общими для всех IP-адресов данной подсети. Остальные биты могут варьироваться для создания индивидуальных IP-адресов компьютеров, входящих в данную подсеть.
Определите по маске IP-адресов, какой диапазон адресов предоставлен для компьютеров той локальной сети, в которой вы работаете. Вычислите, какое максимальное число компьютеров может быть в вашей локальной сети.
► Вы можете увидеть еще один код, имеющий структуру IP-адреса, и рядом слова «Основной шлюз» (в англоязычном вариан-
1293
Компьютерный практикум
те Gateway). На самом деле это IP-адрес того компьютера, который обеспечивает взаимодействие различных подсетей (как было сказано в § 38, наличие шлюзов — один из принципов объединения различных сетей в Интернете). Если сетевая программа по IP-адресу и маске определит, что компьютер, которому предназначено послание, не входит в локальную подсеть, то она отправит его на этот компьютер для передачи в глобальную сеть.
Подключение к Интернету может произойти только после того, как определены все три параметра: 1Р-адрес, маска подсети и основной шлюз.
Познакомимся теперь с маршрутными и скоростными характеристиками глобальной сети. Пусть мы хотим узнать, через какие узлы и как быстро происходит соединение вашего компьютера с компьютером какой-либо поисковой системы, например Rambler.-^
4 Введите команду tracert www.rambler.ru. На экране появится список узлов (обычно 5—7), через которые проходит информация, и время передачи между узлами. Проведите еш;е несколько экспериментов с адресами других host-компьюте-ров, например www.google.ru или www.microsoft.com.
^ Возможно, что в представленном вам протоколе прохождения узлов в некоторых строках стоят звездочки. Если звездочка одна, то это означает, что ответ от этого узла не получен в отведенное время ожидания; если же в строке нет ничего, кроме звездочек, это означает, что администраторы этих хостов не разрешили прохождение через данный узел и пришлось искать обходной путь.
5 Определите по протоколу, в каких узлах скорость передачи информации самая низкая.
Г.
Q ’Яабораторная работа № 17 (к
Начнем с простого: пусть вам известно, где взять нужную информацию. Это значит, вы знаете, на каком сервере хранится данная информация, в какой папке (или в каком каталоге) она располагается и, быть может, каково имя файла. Иными словами, вы знаете универсальный указатель ресурса, предоставляюш;его нужную информацию. Но мы для учебных целей предлагаем воспользоваться следуюш;им адресом:
https:// WWW. hermitage. ru
1294
;;)i Th« State Hermitage Museum: Hermitage History - Microsoft Exolorer provided by Ural Relcom H Q Q i
Прж* 8t« Избренюе Сесаис Cnp—г» ______
НАЧАЛО СЛЛАВХА КАЛГАСАЙТА ОТЗЫВ СЛУЖБЫ КАЛСПОАРЬ ЗАКАЗбИЛСТОВ $НОР£
_ У ’ Г
быстрый поиск
начать"]
линия агемЕНи•
СТРАНИЦЫ ИСТОРИИ . ЗДАНИЙ и Зл;:ы ЭРМИТАЖА ■ РЕСТАВРАЦИОННьа • ПРОГРАММЫ
ЦРОГУЛАА по ИМОеоА’ОРСХОМУ .
ЗОМИТАЖ'.
спонсоры проекта
СТРАНИЦЫ ИСТОРИИ
♦ БЛЕСТЯЩИЙ BEK-BEKXV1I1
“...Вы не северное сияние, вы — самая блестящая звезда Севера, и никогда не бывало светила столь благодательного” — такую характеристику дал Вольтер Екатерине Великой. Личность Екатерины озаряла эпоху, получившую в истории название “блестящий век”. В царствование Екатерины II создается грандиозный дворцовый ансамбль, ставший и официальной резиденцией, и хранилищем художественных ценностей, и домом, в которо.м протекала частная жизнь императрицы.
♦ДВОРЕЦ И МУЗЕЙ - ВЕК XIX
7 февраля 1852 года в здании Нового Эрмитажа был открыт первый публичный художественный музей России. Традиция коллекционирования, сложившаяся в екатерининскую эпоху, возводится в ранг государственной политики. XIX век вносит пере.мены и в жизнь императорской резиденции. Согласно вкусам времени интерьеры зданий дворцового ансамбля приобретают новый облик. В их стенах протекает официальная и частная жизнь императорской фамилии, и с ни.ми связана последняя страница царствования династии Ро.мановых.
.--■1
'.Ч
ш
~Г"|
Рис. КП.13 Страница сайта музея Эрмитаж
Вызовите имеющийся на вашем компьютере браузер и запишите в строку вызова указанный адрес.
Перед вами главная страница одного из самых известных музеев мира. Пользуясь гиперссылками, просмотрите страницы, на которых говорится об истории этого уникального хранилища (рис. КП. 13).
С помощью буфера обмена скопируйте текст из нескольких страниц, посвященных истории музея, и вставьте его в документ какого-либо текстового редактора, например Micro-
I 295 Компьютерный практикум
soft Word. Дополните текст рисунками. Сохраните получившийся документ под каким-либо именем.
Если вы чувствуете, что полностью разобрались с первым заданием, то переходите ко второму.
2 Запишите в окне вызова браузера следующий адрес:
https://president, kremlin. ru
Выберите наиболее интересные, на ваш взгляд, гиперссылки и посмотрите содержание соответствующих страниц.
3 Найдите описание символики Российского государства — герба и флага. Скопируйте текстовые фрагменты, описывающие историю российской символики, а также сопровождающие изображения.
4 Дополните полученную информацию тем, что вам кажется интересным. Сохраните созданный документ под каким-либо именем.
Лабораторная работа N2 18 (к § 40) Поиск в Интернете
Сегодня вы будете разыскивать информацию с помощью поисковой системы. Для начала мы предлагаем вам найти фотографию Винтона Серфа — как-никак считается отцом Интернета!
1 Вызовите с помощью браузера какую-либо поисковую систему. Можно воспользоваться поисковыми системами, приведенными в § 40. Следуя указаниям, сформируйте запрос на поиск информации о Винтоне Серфе.
► Скорее всего, вас постигла неудача — слишком много документов предлагает поисковая система на такой запрос. Это имя встречается в тысячах публикаций. -4
2 Добавьте в запрос ключевое слово «фото» (без кавычек, разумеется). Если и это не помогло, подскажем, что существует фотография с президентом Клинтоном. Сформируйте нужный запрос,
3 Запишите URL того сайта, где вы нашли подходящую фотографию.
4 Говорят, что в Интернете есть все. Давайте это проверим. Засеките время и попробуйте найти информацию о том, как
1296
решить квадратное уравнение
Ьх
ах^ +
+ с = 0.
Наконец, задание посложнее: составьте список школ в вашем городе (или области), имеющих в Интернете свои сайты. Сформируйте нужный запрос и полученные результаты сохраните в виде текстового документа.
Лабораторная работа № 19 (к § 42)
Выбор профессии и трудоустройство через Интернет
Вы заканчиваете школу. Впереди огромный мир разнообразных профессий. Кто-то продолжит обучение в вузе или колледже, кто-то пойдет работать. Чтобы эти первые шаги в новую жизнь были уверенными, надо располагать информацией о том, какие профессии востребованы, какие возможности предоставляют образовательные учреждения, какие требования предъявляют работодатели.
Начнем с изучения рынка труда. Какие специалисты сегодня нужней? Вот адрес сайта Федеральной службы по труду и занятости:
https://www.rostrud .inf о/press/news
1 Зайдите на этот сайт и выясните спрос на различные профессии. Проследите динамику этого спроса. Составьте с помощью Excel диаграмму изменения спроса за последние 5 лет для нескольких разных профессий (например, программиста, экономиста, журналиста, секретаря-референта и т. д.).
2 Найдите с помощью поисковой системы сайт службы занятости населения вашего региона (например, для уральского региона таким может оказаться сайт с адресом
https://WWW. sverdl. rostrud. ru/portal/г/main).
Выполните задание, аналогичное заданию пункта 1, для вашего региона. Сравните получившиеся результаты.
3 Интерес к профессии — главный ориентир в будущей карьере. Но и зарплата играет не последнюю роль. Попытайтесь с помощью тех же сайтов (а может быть, и других) проследить, как изменялась оплата труда выбранных вами профессий в течение тех же 5 лет.
4 На многих сайтах региональных новостей есть раздел «Вакансии». В этом разделе работодатели помещают объявления
I 297 Компьютерный практикум
О ТОМ, какие специалисты нужны их предприятию или фирме. Найдите такие объявления.
5 Обычно желающим занять вакансию предлагается тут же заполнить анкету и написать так называемое резюме о самом себе. Скопируйте в текстовом редакторе анкету и вопросы резюме и попытайтесь их заполнить. Обсудите с товарищами по классу и учителем, как лучше написать резюме, чтобы работодатель по достоинству и адекватно оценил ваши возможности.
6 Посмотрев данные о рынке труда, вы, весьма вероятно, придете к выводу, что вам надо продолжить свое образование. С помощью поисковой системы найдите учебные заведения, где готовили бы специалистов по выбранной вами профессии. Не забудьте сформулировать запрос так, чтобы не получить рекомендации уехать за тридевять земель.
7 Выбрав учебное заведение, зайдите на его сайт и уточните правила приема, план приема (т. е. сколько человек будет принято на 1-й курс данным учебным заведением), продолжительность обучения по выбранной вами специальности.
Ц Лабораторная работа № 20 (к § 48)
Исследование алгоритмов и программ
1 Перечитайте условие задачи 2 к § 48. Запишите программу, реализующую этот алгоритм, и отладьте ее.
► А теперь давайте поинтересуемся не только показателем степени N, для которого 3^ оканчивается на 00001, но и самим этим числом. Для этого надо в нужное место алгоритма поставить команду Сообщить X. А
2 Модифицируйте свою программу и попытайтесь получить требуемое число.
► Скорее всего, вас постигла неудача — число, которое вы собирались получить, не умещается в разрядной сетке при объявленном типе «целое».
Вывод из проведенного компьютерного эксперимента таков: реализуя алгоритм в виде программы, надо учитывать ограничения, возникающие из физических особенностей вычислительной техники, — ограниченность разрядной сетки, ограниченность памяти, продолжительность вычислительного процесса. Выполняя
1298
лабораторную работу № 6, вы наблюдали влияние ошибок округления.
Тем не менее поставленную задачу — найти значение N, при котором 3^ оканчивается на 00001, — решить все равно нужно. Для этого придется придумать другой алгоритм.
Для нахождения последних пяти цифр степеней числа 3 достаточно вычислять только эти пять цифр. В предложенном алгоритме достаточно поменять одну строку. Вот как выглядит преобразованный алгоритм:
Алгоритм Показатель степени-2
цел: X, N;
{ X := 3;
N := 1;
Делать пока (X > 1)
{
X
X
N
= 3*Х;
= mod(X, 100000); = N + 1;
}
}
Сообщить N;
Неудача, постигшая вас при реализации исходного алгоритма, должна была научить осмотрительности — вдруг разыскиваемое число N настолько велико, что и оно не уместится в заданную разрядную сетку. Надеемся, что предложенное вами обоснование применимости исходного алгоритма содержит все необходимые аргументы того, что число N не так уж велико (по компьютерным меркам). -4
3 Напишите программу, реализуюш;ую алгоритм Показатель степени-2, отладьте ее и получите ответ на вопрос задачи.
4 Рассмотрите следуюш;ий алгоритм, обрабатываюш;ий натуральное число х:
Алгоритм
цел: л:, у, г;
{ Запросить х; у := X + Р(л:);
Делать пока (л: у)
{ Z у + Р(у);
X := у;
}
У := 2;
}
Сообщить х;
{*конец цикла*)
1299
Компьютерный практикум
В нем используется подпрограмма-функция:
Функция Р (цел: х): цел { Если х < 10 то { знач := х; }
иначе { знач := Р(х div 10)*(x mod 10); }
}
Применим ли этот алгоритм к любому натуральному числу X? Ответить на этот вопрос, ограничившись изучением только текста алгоритма, непросто. Давайте поэкспериментируем. Напишите на изучаемом вами языке программирования программу, реализующую данный алгоритм, и отладьте ее. Проведите вычислительный эксперимент, придавая х различные значения (например, 9, 99, 999, 9999 и т. д.). Попытайтесь по результатам эксперимента определить, ограничено ли число исполнений тела цикла в основном алгоритме какой-нибудь константой, не зависящей от х.
А теперь попытайтесь результаты своего эксперимента объяснить теоретически и получить ответ на вопрос: «Верно ли, что при любом натуральном значении х алгоритм заканчивает работу за конечное число шагов?»
Предлагаем вам попытаться выполнить еще одно задание. Перечитайте задание 4 из § 48. Записанный там алгоритм никогда не завершит работу — нетрудно доказать, что значение переменной S в ходе выполнения алгоритма никогда не превысит числа 2. Еще в XVIII в. математики установили, что значение S, вычисляемое при помощи этого алго-
2
ритма, никогда не превосходит —, хотя с увеличением N
становится как угодно близким к этому числу. Ваша задача — определить, при каком наименьшем значении N зна-
2
чение переменной S будет отличаться от — не более чем
6
на 0,0000001. Казалось бы, для этого годится следующий алгоритм:
2
Алгоритм Хорошее приближение к — вещ: S; цел: N; ®
{ S := 1;
N := 1;
Делать пока (S< п*п/д - 0,0000001)
{ N — N + 1;
S S+ 1/N^;
}
Сообщить N;
{*конец цикла*)
}
1300
Проведите вычислительный эксперимент с этим алгоритмом. Удалось ли вам найти нужное N? Подумайте и модифицируйте алгоритм так, чтобы решить поставленную задачу. Возможно, для этого вам пригодится информация о том, что при iV = 10 000 000 значение S уже больше, чем
^ - 0,0000001.
6
" Ц Лабораторная работа № 21 (к § 52)
. Способы представления графов
Чтобы тестировать составляемые алгоритмы обработки графов, надо уметь создавать в памяти компьютера подходящие графы. Пусть требуется граф с п вершинами и т ребрами. Прежде всего оценим число т. Поскольку из каждой вершины выходит не более чем п - 1 ребер, а сумма всех степеней вершин равна удвоенному числу ребер, имеем соотношение 2т < (л - 1) п. Равенство достигается, если каждая вершина графа соединена со всеми остальными вершинами. Такой граф называется полным.
Граф будем строить с использованием датчика случайных чисел, одновременно получая для него представление и в виде списка ребер, и в виде таблицы смежности. Ниже приведен алгоритм, в котором через Si?[l:m; 1:2] обозначен массив, содержащий список ребер, а через TS[l:n; 1:л] обозначен массив, содержащий таблицу смежности.
Алгоритм Случайный_граф
цел: п, т, /, у, k, 5Д[1:от; 1:2]; rS[l:ra; 1:п];
(* запрашивается количество вершин *) (* запрашивается количество ребер *)
{ Запросить п;
Запросить т\
Если {т > п*{п - 1)/2)
то { Сообщить "Такой граф построить нельзя”; } иначе
{ Делать от t := 1 до га
{
Делать от / := 1 до га
{ TS[ix П := 0;
}
} (* Первоначальное заполнение таблицы смежности
нулями *)
Делать от t := 1 до m
{ у := ШТ((га - l)*rand(l)) -t- 1; k := INT((ra - y)*rand(D) + у + 1;
Делать пока TS[j; k] := 1 { у := INT((ra - l)*rand(l)) + 1;
1301
Компьютерный практикум
k := INT((ra — /)*rand(l)) + j + 1;
TS [y; *]:=!;
TS [*; Л := 1;
SR[i-, 1] := y;
2] :=
} (*случайное добавление одного ребра *)
Сообщить "Вот таблица смежности";
Сообщить rS[l:ra; 1:га]; (*в реальной программе это
действие оформляется двойным циклом *) Сообщить "Вот список ребер";
Сообщить Sii[l:/n; 1:2]; (*в реальной программе это
действие оформляется двойным циклом *)
Запрограммируйте этот алгоритм, отладьте его для небольших значений тип (например, т = 5ип = 6; т = 9и п = 7 и т. п.).
В последуюш,их пунктах вам потребуются графы, созданные случайным образом для разных значений тип. Поэтому оформите созданную вами программу как подпрограмму, для которой аргументами будут переменные т и п, а результатами — массивы T'S[l:n; 1:п] и 1:2].
Запрограммируйте алгоритм, составленный вами при выполнении задания 4а из § 52. Отладьте получившуюся программу, подпрограмму из пункта 2.
Запрограммируйте алгоритм, составленный вами при выполнении задания 46 из § 52. Отладьте получившуюся программу, используя подпрограмму из пункта 2.
Используя графические операторы, составьте алгоритм рисования графа, заданного списком ребер. С помощью подпрограммы, составленной вами при выполнении пункта 2, сгенерируйте несколько небольших графов и изобразите их на экране компьютера.
Используя графические операторы, составьте алгоритм рисования графа, заданного таблицей смежности. С помощью подпрограммы, составленной вами при выполнении пункта 2, сгенерируйте несколько небольших графов и изобразите их на экране компьютера.
В предыдущих заданиях графы были ненагруженными. Составьте алгоритм генерации нагруженного графа. Для простоты нагрузку считайте целыми числами и генерируйте с помощью ДСЧ в диапазоне от 1 до 20.
1302
Таблица КП. 8
Л 8 15 30 50
18 70 300 800
8 Запрограммируйте составленный вами алгоритм и отладьте получившуюся программу. Создайте с помощью этой программы 4 графа. Для генерируемых графов значения лит возьмите из таблицы КП.8. Оформите составленную вами программу в виде подпрограммы, для которой аргументами будут переменные тип, а результатами — массивы TSiV[l:n; 1:л] (таблица смежности с нагрузкой) и SNR[l:m; 1:3] (список нагруженных ребер).
Нагруженный граф, имеющий л вершин, задан списком ребер. Составьте алгоритм, создающий по этому списку таблицу смежности. Запрограммируйте этот алгоритм и отладьте получившуюся программу.
10 Нагруженный граф, имеющий л вершин, задан таблицей смежности. Составьте алгоритм, создающий по этой таблице список ребер. Запрограммируйте этот алгоритм и отладьте получившуюся программу.
Лабораторная работа N9 22 (к § 53)
Доиск В глубину
Для проведения вычислительных экспериментов мы предлагаем воспользоваться графом с таблицей смежности, представленной таблицей КП.9. Сам граф с последовательной нумерацией вершин представлен на рисунке КП. 14. Как видно из рисунка, этот граф связен.
1 Запрограммируйте алгоритм поиска в глубину, предложенный в объяснительном тексте § 53, отладьте программу и с ее помощью выполните обход графа с указанной таблицей смежности. Проставьте на изображении графа порядок прохождения вершин при исполнении данного алгоритма.
Рис. КП.14
1303
Таблица КП. 9
Компьютерный практикум
Вершина 1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 0 1 0 1 0 1 0 0 0 0 0 0 0 0
2 1 0 1 1 1 0 1 0 0 0 0 0 0 0
3 0 1 0 0 1 0 0 0 1 0 0 0 0 0
4 1 1 0 0 0 0 0 0 0 0 1 0 0 0
5 0 1 1 0 0 0 0 1 0 0 1 0 0 0
6 1 0 0 0 0 0 0 0 0 1 1 0 0 0
7 0 1 0 0 0 0 0 0 0 0 1 1 0 1
8 0 0 0 0 1 0 0 0 0 0 0 1 1 0
9 0 0 1 0 0 0 0 0 0 0 0 0 0 1
10 0 0 0 0 0 1 0 0 0 0 1 0 0 0
11 0 0 0 1 1 1 1 0 0 1 0 1 1 0
12 0 0 0 0 0 0 1 1 0 0 1 0 0 0
13 0 0 0 0 0 0 0 1 0 0 1 0 0 1
14 0 0 0 0 0 0 1 0 1 0 0 0 1 0
2 Выполнив задание 2 из § 53, вы модифицировали алгоритм так, чтобы поиск в глубину выполнялся с произвольной вершины. Запрограммируйте составленный вами алгоритм, отладьте получившуюся программу. Выполните поиск в глубину для графа, заданного рисунком КП. 14 и таблицей КП.9, начиная с вершин с четными номерами.
В предложенном алгоритме поиска в глубину есть недостаток: возврат к вершинам, в которых не все ребра еще рассмотрены, осуществляется неэффективно, поскольку снова просматриваются все вершины от начала до этой «перспективной» вершины. Было бы хорошо запоминать «перспективную» вершину... Реализуем эту идею. Чтобы хранить список «перспективных» вершин, организуем одномерный массив Sf[l:n].
1304
Алгоритм Поиск в глубину с использованием стека цел: к, т, s, t, и, п, а, G[l:ra; 1:га], В[1:ге], Sf[l:n], С[п];
{ Запросить п;
Запросить G[l:n; 1:га]; (* реально это действие — ввод
таблицы смежности — оформляется двойным циклом *) Запросить 7п; (* запрашивается номер исходной вершины *)
В[1] := 7п;
Sf[l] := m;
Делать от t := 1 по га
{ C[t] := 0;
} (* C[t] := 1, если вершина t просмотрена *)
С[т\ := 1;
ft := 1; (* счетчик количества пройденных вершин *)
U := 1; (* счетчик количества вершин в массиве St *)
Делать пока (и > 0)
{ S := 1;
Делать от ^ := 1 до га { Если (G[S^[u], f] = 1 и С[^] = 0) то
{ а := t\
S := 0;
}
} (* проверка, существует ли вершина, смежная с St [и ], кото-
рая еще не просматривалась: если существует, то s = 0 *) Если (s = 0) то
{ U := U + 1;
S^[u] := а; ft := ft + 1;
B[ft] := а;
С[а] := 1;
}
иначе
{ U := U - 1;
}
}
Делать от ft := 1 по га { Сообщить В[к\,
}
}
Как обрабатывается массив Si? По мере продвижения в глубину в него заносятся номера пройденных вершин. Как только вершина оказывается тупиковой, т. е. из нее уже нельзя продвинуться дальше к новой вершине, она стирается из массива St (в ячейку заносится 0) и алгоритм начинает работать с предыдущей вершиной. Если и эта вершина оказывается тупиковой, то она тоже стирается и обрабатывается предыдущая вершина и т. д. Количество ненулевых элементов в St, т. е. номеров вершин.
1305
Компьютерный практикум
то увеличивается, то уменьшается в зависимости от удаленности от исходной вершины. Все это происходит до тех пор, пока все элементы в St не станут нулевыми. Заметим, что ненулевой элемент, который появляется в St последним, удаляется из него первым. Это напоминает движение патронов в магазине автомата: последний патрон, которым снаряжен магазин, будет первым подан на выстрел. Поэтому такой способ организации данных — последним пришел, первым обработан — называют магазинным, а саму такую структуру данных — магазином или, по-другому, стеком.
Стек — довольно часто используемая структура данных в различных задачах на алгоритмизацию. Мы продемонстрировали, как организовать стек с помош;ью массива, и надеемся, что теперь вы будете легко пользоваться этой структурой для решения других задач.
Давайте экспериментально сравним эффективность алгоритма поиска в глубину, предложенного в объяснительном тексте § 53, и алгоритма поиска в глубину со стеком. Для этого в программы надо вставить операторы, фиксируюш;ие время. Напомним, как это делается.
В языке Basic можно воспользоваться функцией TIMER. По команде t = TIMER переменной t будет присвоено значение, равное числу секунд, прошедших от 0 часов текуш;их суток.
В языке Pascal для вывода времени можно воспользоваться процедурой gettime(/i, тп, s, ss). В переменной h будет указан те-куш;ий час, в переменной т — минуты, в s — секунды, в ss ^— миллисекунды.
3 Используя программы, разработанные вами при выполнении лабораторной работы № 21, сгенерируйте граф с нужным числом вершин п и числом ребер т (они указаны в таблице КП. 10), представив его таблицей смежности. Проведите вычислительный эксперимент (время на генерацию и преобразование способа представления графа учитывать не следует). По результатам исполнения алгоритмов
Таблица КП. 10
п 30 40 45 50
т 300 500 660 800
Время работы алгоритма «Поиск в глубину»
Время работы второго алгоритма «Поиск в глубину с использованием стека»
П Информатика П кл.
«Поиск в глубину» и «Поиск в глубину с использованием стека» заполните третью и четвертую строки таблицы КП. 10. Для каждой пары чисел пит найдите отношение времени работы первого алгоритма ко времени работы второго алгоритма. Как, на ваш взгляд, можно охарактеризовать это отношение?
Выполнив задание 4 из § 53, вы составили алгоритм поиска в глубину для графа, заданного списком ребер. Запрограммируйте ваш алгоритм и отладьте получившуюся программу. С помощью этой программы для графа, изображенного на рисунке КП. 14, выполните несколько раз поиск в глубину, начиная с вершин с четными исходными номерами. (Представление этого графа списком ребер получите, либо преобразовав имеющуюся у вас таблицу смежности, либо создав этот список «вручную».)
Лабораторная работа N° 23 (к § 53)
Поиск в ширину
Теперь займемся алгоритмом «Поиск в ширину». Для проведения вычислительных экспериментов мы предлагаем воспользоваться графом, который представлен таблицей КП.9. Сам граф с последовательной нумерацией вершин изображен на рисунке КП. 14.
1 Запрограммируйте алгоритм поиска в ширину, предложенный в объяснительном тексте § 53, отладьте программу и с ее помощью выполните обход.
2 Выполнив задание 7 из § 53, вы модифицировали алгоритм так, чтобы поиск в ширину выполнялся с произвольной вершины. Запрограммируйте составленный вами алгоритм, отладьте получившуюся программу и выполните несколько раз поиск в ширину для того же графа, начиная с вершин с четными исходными номерами.
3 Выполнив задание 8 из § 53, вы составили алгоритм поиска в ширину для графов, заданных списком ребер. Запрограммируйте этот алгоритм. Преобразуйте таблицу смежности графа в его представление списком ребер и отладьте программу.
4 Проведите эксперименты со своими программами, чтобы выяснить, сколько времени требуется на обход каждого из графов, который фигурировал в задании 4 лабораторной работы № 22. По результатам эксперимента заполните таблицу, аналогичную таблице КП. 10.
130/
. ?>ЛПЬН>1«рНЫИ прокг^
Лабораторная работа N° 24 (к § 53)
Волновой алгоритм
Выполнив задание 10 из § 53, вы усовершенствовали волновой алгоритм, предложенный в объяснительном тексте. Модифицируйте его так, чтобы он был применим к графу с любым наперед заданным количеством вершин, а не только к графу с двадцатью вершинами. Запрограммируйте составленный алгоритм и отладьте получившуюся программу. Для отладки воспользуйтесь графом, представленным на рисунке КП.14.
Составьте алгоритм и напишите программу, которая позволяла бы для каждой вершины графа находить расстояние до самой удаленной от нее вершины. Получите список, в котором для каждой вершины указана самая от нее далекая вершина и расстояние между ними (если наиболее удаленных вершин несколько, то должны быть указаны все). Используйте волновой алгоритм в качестве вспомогательного. Для отладки можно воспользоваться графом, представленным на рисунке КП.14.
Исполнение алгоритма, составленного вами в пункте 2, позволяет каждой вершине связного графа сопоставить число — расстояние до самой далекой вершины. Вершина графа, для которой расстояние до самой удаленной вершины минимально, называется центром графа, а расстояние от центра до самой удаленной вершины называется радиусом графа. Составьте алгоритм, позволяющий находить центр графа и радиус графа. Имейте в виду, что у графа может оказаться несколько центральных вершин. Например, у графа, изображенного на рисунке КП. 15, а, их четыре, а у графа, изображенного на рисунке КП. 15, б, все вершины центральные. Ваш алгоритм должен находить все центральные вершины графа. Для отладки программы воспользуйтесь графами, изображенными на рисунках КП.14 и КП.15.
а)
б)
Рис. КП. 15
1308
Для задач, рассмотренных в пунктах 1—3 данной лабораторной работы, запрограммируйте алгоритмы, обрабатывающие графы, представленные списками ребер.
Запрограммируйте алгоритмы, которые вы составили, выполнив задание 12 из § 53. Отладьте получившиеся программы на графах, изображенных на рисунке КП. 16. Рассмотрите вершины, принадлежащие разным компонентам связности.
а)
Рис. КП. 16
б)
Запрограммируйте алгоритмы, которые вы составили, выполнив задание 13 из § 53. Отладьте получившиеся программы на графах, изображенных на рисунке КП. 16.
Измените программу, составленную вами при выполнении предыдущего пункта, так, чтобы она сообщала только количество связных компонент. Отладьте модифицированную программу.
Сгенерируйте 4 графа в соответствии с данными таблицы КП. 11. Найдите для каждого из них количество компонент связности.
Таблица КП. 11
Число вершин 8 15 30 50
Число ребер 9 25 80 150
8 Запрограммируйте алгоритмы, которые вы составили, выполнив задание 14 из § 53. Оформите составленную вами программу в виде подпрограммы — она вам понадобится при выполнении лабораторных работ № 25 и 26.
309 Компьютерный практикум
9 Запрограммируйте алгоритм, который вы составили, выполнив задание 15 из § 53. Отладьте получившуюся программу на одном из графов, который вы можете создать, используя подпрограмму, написанную при выполнении задания 8 из лабораторной работы № 21.
10* Запрограммируйте алгоритм, который вы составили, выполнив задание 16 из § 53, и отладьте получившуюся программу.
Лабораторная работа № 25 (к § 54)
Мосты и точки сочленения
Выполнив задание б из § 54, вы составили два алгоритма, позволяющие находить в графе точки сочленения. Запрограммируйте эти алгоритмы и отладьте получившиеся программы. Для отладки используйте графы, изображенные на рисунке 6.13.
Используя подпрограмму, написанную вами при выполнении задания 8 из лабораторной работы № 24, сгенерируйте несколько связных графов и с помощью составленных вами программ найдите для них все точки сочленения.
Выполнив задание 7 из § 54, вы составили два алгоритма, позволяющие находить в графе мосты. Запрограммируйте эти алгоритмы и отладьте получившиеся программы. Для отладки снова используйте графы, изображенные на рисунке 6.13.
Используя подпрограмму, написанную вами при выполнении задания 8 из лабораторной работы № 24, сгенерируйте несколько связных графов и с помощью составленных вами программ найдите для них все мосты.
Лабораторная работа N2 26 (к § 55 и 56)
Построение каркасов
Выполнив задание из § 55, вы на основе поиска в глубину составили два алгоритма, позволяющие находить каркас графа, представленного таблицей смежности и списком ребер. Запрограммируйте эти алгоритмы и отладьте получив-
шиеся программы. Для отладки воспользуйтесь графом, представленным на рисунке КП. 14.
Из составленной вами программы и подпрограммы, созданной при выполнении задания 8 из лабораторной работы № 24, создайте подпрограмму, позволяющую строить случайным образом дерево с заданным числом вершин.
Выполните задание, аналогичное заданию 1, взяв за основу построения каркаса алгоритм поиска в ширину.
Приведем алгоритм, позволяющий строить дерево с заданным числом вершин. В нем через SjRD[l:(n - 1); 1:2] обозначен массив, содержащий список ребер создаваемого дерева.
Алгоритм Случайное_дерево цел: п, I, у, k, s, SRD[l:(n - 1); 1:2]; l«rS[l:n];
{ Запросить n;
Делать от i := 1 до п
{ KS[i] := i;
}
Делать от i := 1 до « - 1
{ у := ШТ((л - l)*rand(l)) + 1; k := ШТ((л - y)*rand(l)) -I- у + 1; Делать пока (KS[j] = KS[k])
{ i := INT((n - l)*rand(l)) -b 1; k := INT((« - j)*rand(l)) -t- j + 1;
(* запрашивается количество вершин *)
t := A:S[A];
SRD[i, 1] := y;
SRD[i, 2] := ft;
Делать ет s := 1 до n { Если fts[s] = ^ IQ { fts[s] }
ВД; }
(* конец цикла *)
)
Запрограммируйте этот алгоритм, отладьте его для небольших значений п. (Например, п = 6; п = 9 и т. п.)
Оформите созданную вами программу как подпрограмму, для которой аргументом будет переменная п, а результатом — массив 5Я£)[1:п - 1; 1:2].
В объяснительном тексте § 55 рассказано, как изображают деревья: для этого одну из вершин назначают корнем, а остальные вершины распределяются по уровням, определяемым удаленностью вершины от корня. Используя графические операторы, составьте алгоритм изображения дерева —
номер вершины, которая будет служить корнем, запрашивается у пользователя (не забудьте предварительно сообщить пользователю, сколько вершин имеет дерево). Запрограммируйте составленный вами алгоритм и отладьте получившуюся программу. Используя подпрограмму построения случайного дерева, постройте дерево и получите 2—3 его изображения, по-разному выбирая корневую вершину.
7 Постройте 2—3 дерева (с разным количеством вершин) и для каждого из этих деревьев найдите его центр, воспользовавшись программой, составленной при выполнении задания 3 лабораторной работы № 24. Изобразите каждое дерево, приняв центральную вершину в качестве корня. В чем преимущество изображения дерева, у которого корнем служит центральная вершина, перед другими изображениями дерева?
8* Придумайте способ построения каркаса наименьшего радиуса для заданного графа. Составьте алгоритм построения такого каркаса. Запрограммируйте этот алгоритм и отладьте программу. Для отладки можно воспользоваться графами, изображенными на рисунках КП. 14 и КП. 15. С помощью подпрограммы, созданной при выполнении задания 8 из лабораторной работы № 24, сгенерируйте связный граф и найдите для него каркас наименьшего радиуса.
9 Запрограммируйте алгоритм Краскала, который вы составили, выполнив задание 5 из § 56. Используя подпрограмму, составленную при выполнении задания 6 из лабораторной работы 21, сгенерируйте нагруженный граф и найдите какой-либо каркас минимального веса. (Предварительно убедитесь, что эти графы связны.)
10 Модифицируйте программу, составленную вами при выполнении предыдущего пункта лабораторной работы, так, чтобы стало возможным находить каркасы максимального веса. Найдите с помощью полученной программы какой-либо каркас максимального веса для тех же нагруженных графов, которые использовались вами в предыдущем пункте.
11 Запрограммируйте алгоритм Прима (см. задание 9 из § 56). Отладьте программу. Найдите каркас минимального веса с помощью этой программы и с помощью алгоритма Краскала для одного и того же нагруженного графа. Получились ли у вас одинаковые каркасы?
|312
Г.
Лабораторная работа N9 27 (к § 58)
Построение стратегии но основе списка проигрышных позиций
Выполняя задание 8 из § 58, вы составили алгоритм построения массива проигрышных позиций для игры, рассмотренной в объяснительном тексте этого параграфа. Напомним, что в объяснительном тексте массив а описан оператором цел:а[1:га: 1:2]. При этом вам пришлось принять решение о значении п в зависимости от размера поля. Если поле имеет размер хХ у клеток, то в качестве п мы советуем вам взять минимальное из чисел х vi у. Запрограммируйте свой алгоритм и отладьте получившуюся программу.
Модифицируйте алгоритм игры, приведенный в объяснительном тексте § 58, так, чтобы можно было играть на бесконечном поле. Первым ходом фишка ставится на произвольное поле с координатами {k, т). Будьте снисходительны к своему противнику и предоставьте ему право сделать первый ход. Разумеется, надо предварительно сообщить, из какого диапазона следует выбрать числа кит. Чтобы игра не закончилась на первом ходе, кит надо выбирать отличными от 1.
Запрограммируйте составленный вами алгоритм. Для этого оформите программу формирования массива проигрышных позиций, которую вы создали в предыдущем пункте, в виде подпрограммы.
Отладьте и протестируйте полученную программу.
Алгоритм, приведенный в тексте § 58, не проверяет корректность хода противника. Тем не менее сделать ход неправильно (по ошибке, а вовсе не обязательно со злым умыслом) может каждый человек — он ведь не компьютер. Запрограммируйте блок проверки корректности хода противника (в частности, этот блок должен включать проверку корректности первого хода — попадание в предписанный вами диапазон для к и т). Если ход был сделан неверно, вежливо сообщите об этом противнику и попросите его сделать другой ход.
Отладив и протестировав новую программу, подумайте над тем, достаточно ли комфортно общение пользователя с вашей программой.
А теперь можете предложить поиграть в эту игру своим друзьям и знакомым.
1313
Компьютерный практикум
" Ц Лабораторная работа № 28 (к § 59)
Построение стратегии на основе инварианта
Построим стратегию для игры «Баше» (см. задание 6 из § 59). Для общего случая, т. е. когда в кучке первоначально лежит п камней и за один ход разрешается брать из нее не более k камней, проигрышные позиции содержат: п камней, п - (к + \) камней, п - 2{к -I- 1) камней, ..., г камней, где г — остаток при делении числа п па. к + 1. Следовательно, позиция проигрышная, если остаток от деления числа камней в позиции на ft -I- 1 равен числу г. Это и есть инвариант стратегии.
Можно сделать вывод: если г = О, то исходная позиция проигрышная для игрока, делающего первый ход; если же г О, то, взяв из кучки г камней, первый игрок ставит второго игрока в проигрышную позицию. Далее, если игрок, находящийся в проигрышной позиции, взял S камней, то ответным ходом нужно взять ft -Ь 1 - S камней.
1 Мы надеемся, что вами уже составлен алгоритм игры «Баше». Но прежде чем превращать свой алгоритм в nporpsiM-му, доработайте его, ответив на следующие вопросы:
1. Как в вашем алгоритме предусмотрено задание чисел п
и ft? Например:
• оба числа запрашиваются у пользователя;
• оба числа генерируются с помощью датчика случайных чисел;
• одно число генерируется с помощью датчика случайных чисел, а другое запрашивается у пользователя;
• одно число запрашивается у пользователя, а другое определяется компьютером в рамках алгоритма игры.
Возможны другие варианты определения начальных параметров игры.
2. Кто будет делать первый ход? Например:
• определяется случайным образом;
• выбор будет делать пользователь;
• делающий первый ход всегда фиксирован.
3. Что нужно сделать раньше: выбор начальных параметров
игры или выбор того, кто будет делать первый ход?
Возможно, что в вашем классе реализуются разные варианты ответов на эти вопросы. Так будет даже интереснее — вы сможете поиграть в разные варианы этой игры и оценить, какой из них лучше.
Продумайте интерфейс своей программы — как будет происходить общение с пользователем. Не забывайте, что оно должно быть не только вежливым, но и дружественным.
1314
Предусмотрите проверку корректности хода своего противника.
Запрограммируйте свой алгоритм и отладьте получившуюся программу.
В задании 4 из § 59 вам было предложено составить алгоритм игры «Ним». Он сложнее алгоритма игры «Баше». Но ведь пользователю не так интересно, сколько труда и пота потребовалось от вас; он будет оценивать только созданный вами продукт. Поэтому, прежде чем программировать составленный вами алгоритм, доработайте его, ответив на вопросы, аналогичные тем, которые были сформулированы в предыдущем пункте для игры «Баше».
Запрограммируйте свой алгоритм и отладьте получившуюся программу. Поиграйте с компьютером сами и предложите другим. Какие отзывы о своем продукте вы получили?
В задании 11 из § 59 вам предложено составить алгоритм игры, описанной в § 57. Продумайте интерфейс. Доработайте свой алгоритм, запрограммируйте его и отладьте получившуюся программу. Поиграйте с компьютером сами и предложите другим. Какие отзывы о своем продукте вы получили?
Лабораторная работа N° 29 (к § 60)
Построение стратегии но основе оценочной функции
Прежде всего поиграйте в крестики-нолики по той программе, которую составили мы. Для этого введите ее (разумеется, выбрав знакомый вам язык программирования).
Basic
Pascal
SUB proverka (kol)
FOR i = 1 TO 3
IF (m(i,l) = 2) AND (m(i,2) = 2) AND (m(i,3) = 2) THEN PRINT ("Поздравляем!")
END END IF
IF (m(i,l) = 3) AND (m(i,2) = 3) AND (m(i,3) = 3) THEN
PRINT ("Вы проиграли!"") END
! uses crt; i var
I m, oc:array [1..3, 1..3] of integer; j newl, new2, hodl, hod2:integer;
! cx, cxl, cx2, max, kolrinteger;
I s: array [1..6] of integer;
j procedure proverka;
I var irinteger;
I begin
i for i:= 1 to 3 do
1315
1-
Basic
Pascal
END IF IF (m(l,i) = AND (m(3,i) PRINT ( ": END END IF IF (m(l,i) = AND (m(3,i) PRINT (" END END IF NEXT i IF (m(l,l) = AND (m(3,3) PRINT (" END END IF IF (m(l,l) = AND (m(3,3) PRINT ( " END END IF IF (m(l,3) = AND (m(3,l) PRINT (■ END END IF IF (m(l,3) = AND (m(3,l) PRINT C END END IF END SUB
2) AND (m(2,i) = 2) THEN Поздравляем!")
= 2)
3) AND (m(2,i) = 3) = 3) THEN Вы проиграли!")
2) AND (m(2,2) = 2) i = 2) THEN I
Поздравляем!”) '
3) AND (m(2,2) = 3) = 3) THEN Вы проиграли!")
2) AND (m(2,2) = 2) = 2) THEN 'Поздравляем!")
3) AND (m(2,2) = 3) = 3) THEN Вы проиграли!")
SUB WaR (kol)
PRINT ("Вы - X")
PRINT ("Компьютер - О")
PRINT
PRINT (" 1 2 3")
FOR i2 = 1 TO 3 PRINT i2; m(i2,l); m(i2,2); m(i2,3) PRINT NEXT i2
begin
if (m[i,l]=2) and (m[i,2]=2) and (m[i,3]=2) then begin
writeln ('Поздравляем!'); halt(O); end;
if (m[i,l]=l)and(m[i,2]=l)and (m[i,3]=l) then begin
writeln ('Вы проиграли!'); halt(O); end;
if (m[l,i]=2) and (m[2,i]=2) and (m[3,i]=2) then begin
writeln ('Поздравляем!'); halt(O); end;
if (m[l,i]=l) and (m[2,i]=l) and (m[3,i]=l) then begin
writeln ('Вы проиграли!'); halt(O); end; end;
if (m[l,l]=2) and (m[2,2]=2) and (m[3,3]=2) then begin
writeln ('Поздравляем!'); halt(O); end;
if (m[l,3]=2) and (m[2,2]=2) and (m[3,l]=2) then begin
writeln ('Поздравляем!');
halt(O);
end;
if (m[l,l]=l) and (m[2,2]=l) and (m[3,3]=l) then begin
writeln ('Вы проиграли!');
halt(O);
end;
1316
Basic Pascal
Kol = kol + 1 if (m[l,3]=l) and (m[2,2]=l) and
CALL proverka(kol) (m[3,l]=l) then
IF kol < 10 THEN begin
DO writeln ('Вы проиграли!');
INPUT "Сделайте следующий halt(O);
ход", newl, new2 end;
IF (newl >= 1) AND (newl <= 3) end;
AND (new2 >= 1) AND (new2 <= 3) procedure WaR;
THEN var l,j:integer;
WHILE m(newl, new2) <> 0 begin
IF (newl >= 1) AND (newl <= 3) writeln ('Вы - X');
AND (new2 >= 1) AND (new2 <= 3) writeln ('Компьютер - O');
THEN writeln;
INPUT "Сделайте следующий ход", writeln (' 12 3');
newl, new2 for i:= 1 to 3 do
END IF begin
WEND write(i,' ');
END IF for j:= 1 to 3 do
LOOP WHILE (newl < 1) begin
OR (newl > 3) OR (new2 < 1) if m[i,j]=0 then write('- ');
OR (new2 > 3) if m[i,j]=l then write('0 ');
m(newl, new2) = 2 if m[i,j]=2 then write('X ');
oc(newl, new2) = -1 end;
CALL proverka(kol) writeln;
kol = kol + 1 end;
CLS inc(kol);
ELSE proverka;
PRINT "Ничья!" if kol<10 then
END begin
END IF repeat
END SUB wгite('Cдeлaйтe следующий ход:'); readln(newl, new2); until (newl<=3) and (newl>=l)
FUNCTION ocenka (a, b) and(new2<=3) and (new2>=l)
Result = 0 and (m[newl,new2]=0);
fl = 0: f2 = 0: f3 = 0: f4 = 0 m[newl,new2]:=2;
FOR 13 = 1 TO 3 oc[new 1, new2]:1;
IF (m(a, 13) = 2) THEN proverka;
SELECT CASE fl inc(kol);
CASE 0 end else
fl - 1 begin
CASE 1 writeln( 'Ничья!'); readln; halt(O);
1317
Компьютерный практикум
Basic Pascal
fl = 4 end;
CASE 2 end;
fl = 3
END SELECT
END IF function ocenka(a,b:integer):integer;
IF (m(a, i3) = 3) THEN var i:integer;
SELECT CASE fl fl,f2,f3,f4: integer;
CASE 0 result: integer;
fl = 2 begin
CASE 1 result:=0;
fl = 3 fl:=2; f2:=2; f3:=2; f4:=2;
CASE 2 for i:=l to 3 do
fl = 5 begin
END SELECT if (m[a,i]=l) then
END IF case fl of
IF (m(i3, b) = 2) THEN 2: fl:=4;
SELECT CASE f2 3: fl:=l;
CASE 0 4: fl:=6;
f2 = 1 end;
CASE 1 if (m[a,i]=2) then
f2 = 4 case fl of
CASE 2 2: fl:=3;
f2 = 3 3: fl:=5;
END SELECT 4: fl:=l;
END IF end;
IF (m(i3, b) = 3) THEN if (m[i,b]=l) then
SELECT CASE f2 case f2 of
CASE 0 2: f2:=4;
f2 = 2 3: f2:=l;
CASE 1 4: f2:=6;
f2 = 3 end;
CASE 2 if (m[i,b]=2) then
f2 = 5 case f2 of
END SELECT 2: f2:=3;
END IF 3: f2:=5;
NEXT i3 4: f2:=l;
IF a = b THEN end;
FOR i3 = 1 TO 3 end;
IF (m(i3, i3) = 2) THEN if a=b then
SELECT CASE f3 for i:= 1 to 3 do
CASE 0 begin
f3 = 1 if (m[i,i]=l) then
CASE 1 case f3 of
f3 = 4 2: f3:=4;
3 8
Basic
-I
CASE 2 £3 = 3
END SELECT END IF
IF (m(i3, i3) = 3) THEN SELECT CASE £3 CASE 0 £3 = 2 CASE 1 £3 = 3 CASE 2 £3 = 5
END SELECT END IF NEXT i3 END IF
IF a = 4 - b THEN FOR i3 = 1 TO 3
IF (m(i3, 4 - i3) = 2) THEN SELECT CASE £4 CASE 0 £4=1 CASE 1 £4 = 4 CASE 2 £4 = 3
END SELECT END IF
IF (m(i3, 4 - i3) = 3) THEN SELECT CASE £4 CASE 0 £4 = 2 CASE 1 £4 = 3 CASE 2 £4 = 5
END SELECT END IF NEXT i3 END IF
Result=result+s(£l)+s(£2)
IF a = b THEN
result=result+s(£3)
END IF
Pascal
3: £3;=1;
4: £3:=6; end;
i£ (m[i,i]=2) then case £3 of 2: £3:=3;
3: £3:=5;
4: £3:=1; end; end;
if a=4-b then
for i:= 1 to 3 do begin
if (m[i,4-i]=l) then case £4 of 2: £4:=4;
3: £4:=1;
4: £4:=6; end;
if (m[i,4-i]=2) then case £4 of 2: £4:=3;
3: £4:=5;
4: £4:=1;
end;
end;
result:=result+s[£l ]; result:=result+s[£2]; if a=b then begin
result:=result+s[£3];
end;
if (a=4-b) then begin
result:=result+s[£4];
end;
ocenka:=result;
end;
1319
Basic
Pascal
IF a = 4 - b THEN result=result+s(f4) END IF Ocenka=result END FUNCTION
DIM SHARED m(3, 3)
DIM SHARED oc(3, 3)
DIM SHARED s(5) s(0)=5 s(l)=10 s(2)=15 s(4)=45 s(5)=100 CLS kol = 0
CALL WaR(kol)
FOR cx = 1 TO 5 Max = 0
FOR cxl = 1 TO 3 j
FOR cx2 = 1 TO 3 i
IF m(cxl, cx2) = 0 THEN ; oc(cxl, cx2) = ocenka(cxl, cx2)| IF oc(cxl, cx2) > max THEN i max = oc(cxl, cx2) ]
hodl = cxl i
hod2 = cx2 I
END IF END IF
NEXT cx2, cxl 1
M(hodl, hod2) = 3 !
oc(hodl, hod2) = -1 ’
CALL WaR(kol) I
NEXT cx ’
begin
s[l]:=0; s[2]:=5; s[3];=10; s[4]:=15;
s[5]:=45; s[6]:=100;
kolhod:=0;
WaR;
for cx:=l to 5 do begin max:=0;
for cxl:= 1 to 3 do for cx2:= 1 to 3 do if m[cxl,cx2]=0 then begin
oc[cxl,cx2]:=ocenka(cxl,cx2); if oc[cxl,cx2]>max then begin
max:=oc[cxl,cx2];
hodl;=cxl;
hod2:=cx2;
end;
end;
m[hodl,hod2]:=l;
oc[hodl,hod2]:=-l;
WaR;
end;
end.
Для того чтобы не привлекать символьные переменные, пустая клетка обозначена числом О, клетка, в которой стоит нолик, — числом 1, а клетка с крестиком — числом 2.
В ответ на приглашение компьютера сделать ход вы указываете номер строки и номер столбца, клетки, в которую вы намерены очередным ходом поставить крестик.
1320
Поэкспериментируйте с другими значениями оценочной функции. В программе значения оценочной функции хранятся в массиве s[5]. Вы можете поменять значения оценочной функции, изменив соответствующие операторы присваивания.
Реализуйте игру в крестики-нолики на поле размером 4 X 4, в которой по-прежнему выигрывает тот, кто первым составил сплошной горизонтальный, вертикальный или диагональный ряд длины 3 из своих символов.
Реализуйте игру в крестики-нолики на поле размером 4X4, в которой выигрывает тот, кто первым составил сплошной горизонтальный, вертикальный или диагональный ряд длины 4 из своих символов.
Готовимся к Единому государственному экзамену по информатике
Вы заканчиваете школу. Мы предлагаем вам выполнить ряд тестовых заданий, которые по уровню сложности и формулировкам подобны заданиям, реально предлагавшимся на ЕГЭ в предшествующие годы. Поэтому в представленных ниже заданиях вы найдете материал, изучавшийся не только в 11 классе, но и в предшествующие годы.
Часть 1. При выполнении предложенных ниже заданий запишите шифр задания и номер правильного ответа. По окончании работы сверьте получившуюся у вас запись с ключами на с. 327.
А1. Цифра 1 в двоичной записи числа 197 встречается:
1) 3 раза; 2) 4 раза; 3) 5 раз;
4) количество раз, отличное от указанных в пунктах 1—3.
А2. Значение суммы lOg -f- 30g + 90ie в двоичной системе счисления равно:
1) 11010; 2) 110010;
3) 10101010; 4) 1100110.
У321
АЗ. Число ABCD, записанное в шестнадцатеричной системе счисления, в десятичной системе счисления записывается так:
1) 43981; 2) 46813; 3) 34156; 4) 35843.
А4. Среди высказываний 27д > IT^g, 16^3 = 18ц, lOlOlg < 16^6 количество истинных высказываний равно:
1) 0; 2) 1; 3) 2; 4) 3.
А5. В каком порядке расположатся текстовые фрагменты «excel», «бит», «10 Б», «11 А», если их упорядочить по возрастанию в соответствии с ASCII-кодировкой?
1) «10 Б», «11 А», «бит», «excel»;
2) «10 Б», «11 А», «excel», «бит»;
3) «бит», «excel», «10 Б», «11 А»;
4) «11 А», «10 Б», «excel», «бит».
А6. При цветной печати на принтере используется следующая модель цветового кодирования:
1) RGB; 2) HSB; 3) CMYK; 4) CMY.
А7. Скорость передачи данных через ADSL-соединение равна 256000 бит/с. Передача файла через это соединение заняла 4 мин. Размер файла в килобайтах равен:
1) 60 000; 2) 7500; 3) 125;
4) числу, отличному от указанных в пунктах 1—3.
А8. Известны имя почтового сервера (mserver), находящегося в России, и имя почтового ящика (Nike). Укажите адрес электронной почты, соответствующий этим данным:
1) [email protected] ; 2) mserver.Nike@ru;
3) Nike.mserver@ru; 4) [email protected] .
А9. Разделителем иерархических частей в доменном имени хост-компьютера служит:
1) запятая; 2) точка; 3) двоеточие; 4) символ «/».
А10. Каким условием нужно воспользоваться для поиска в Интернете информации о цветах, растущих на острове Мадагаскар или острове Суматра?
Примечание: знаком «|» обозначена операция «ИЛИ», знаком «&» — операция «И».
1) цветы & (Мадагаскар | Суматра);
2) цветы & Мадагаскар & Суматра;
3) цветы I Мадагаскар | Суматра;
4) цветы & (остров | Мадагаскар | Суматра).
1322
А11. Выберите самый маленький объем информации из приведенных ниже:
1) 1000 Кбайт; 2) 1 000 000 байт;
3) 10 000 000 бит; 4) 1 Мбайт.
А12. Таблица стоимости проезда составлена следующим образом: буквами обозначены станции, а на пересечении строки и столбца указана стоимость проезда между соответствующими соседними станциями. Если на пересечении строки и столбца клетка пустая, то такие станции не являются соседними. Стоимость проезда по маршруту от одной станции до другой равна сумме стоимостей проезда между соседними станциями выбранного маршрута. Укажите таблицу, для которой стоимость проезда из А в Б не больше 6.
1)
А Б В Г д
А 3 1
Б 4 2
В 3 4 2 2
Г 1 2
д 2 2
2)
А Б В Г Д
А 4 1 1
Б 3
В 4 3 2
Г 1
д 1 2
3)
А Б В Г д
А 4 1
Б 3 1
В 4 3 2 2
Г 1 2
д 1 2
4)
А Б В Г Д
А 1
Б 3 1
В 3 3 2
Г 1 3
д 1 2
А13. Дан фрагмент электронной таблицы:
После выполнения вычислений была построена диаграмма по значениям диапазона ячеек А1:А4. Укажите получившуюся диаграмму.
А В
1 =В1+1 1
2 =А1+2 2
3 =В2-1
4 =АЗ
U32:
А14. В ячейках АЗ:А5 изображенного ниже фрагмента таблицы Excel перечислены названия продуктов, продаваемых в хлебном отделе магазина. В соответствующих ячейках столбца В указана цена за 1 штуку товара. Требуется заполнить столбцы С и D так, чтобы в их ячейках подсчитывалась стоимость двух или трех единиц товара соответственно.
А в С D
1 Стоимость
2 1 2 3
3 пирожок 5,00
4 булочка 6,50
5 ватрушка 6,00
Какая формула должна быть записана в ячейке СЗ, чтобы после ее копирования в остальные ячейки столбцов С и D получилась требуемая таблица?
1) =ВЗ*С2; 2) =$ВЗ*С$2;
3) =В$3*$С2; 4) =$В$3*$С$2.
1324
А15. Из букв А, В, Д, Е, И составляются четырехсимвольные цепочки. При этом должны соблюдаться следующие правила:
а) на первом месте стоит гласная буква;
б) после гласной буквы не может снова идти гласная буква;
в) последняя буква не совпадает с первой.
Какая из цепочек построена по этим правилам?
1) АИДА; 2) ДЕВА; 3) ЕДВА; 4) ABBA.
А16. Дан алгоритм:
Алгоритм цел: А, В, С;
{ Запросить А;
Запросить В;
Запросить С;
Делать пока (С < О)
{ Сообщить С;
С := А*С + В;
}
}
При некоторых начальных значениях А, В и С к некоторому моменту исполнения алгоритма были напечатаны числа -3, -5, -1. Сколько еще чисел будет напечатано?
1) 0; 2) 1; 3) 3;
4) бесконечно много, так как алгоритм зациклится.
А17. Какому из указанных высказываний равносильно высказывание (XVY) ^ (Х-^У)?
1)Х&У; 2) XVY; 3) X^Y;
4) ни одному из перечисленных в пунктах 1—3.
А18. Задана таблица:
X у F(X, У)
и и и
и л л
л и л
л л и
Такую же таблицу истинности имеет формула:
1) ((Х^У)^Х)У(Х&У); 2) X^V((Xvy)&X);
3) (У^Х) & (X V У); 4) ни одна из указанных в пунктах 1-
-3.
325
Часть 2. При выполнении предложенных ниже заданий запишите шифр задания и ответ в виде последовательности символов. По окончании работы сверьте получившуюся у вас запись с ключами на с. 327.
В1. В системе счисления с некоторым основанием десятичное число 123 записывается как 234. Укажите основание системы.
В2. Укажите через запятую (без пробелов) в порядке возрастания все основания систем счисления, в которых десятичное число 23 оканчивается на 5.
ВЗ. Сколько существует натуральных чисел, меньших 1000, содержащих в своей записи ровно две единицы после перевода их в двоичную систему счисления?
В4. Доступ к файлу ftp.net, находящемуся в папке txt.org, расположенной на сервере ru.com, осуществляется по протоколу http. В таблице буквами от А до И закодированы фрагменты адреса. Запишите последовательность этих букв, кодирующую адрес указанного файла в сети Интернет.
А Б В Г Д Е лтл лч. 3 И
.net txt :// ftp ru .org http / .сот
В5. Сколько имеется целых значений переменной X, для которых истинно высказывание (Х^- АХ - 5 > 0) =>(Х^-3) & (Х<2)?
В6. Для хранения растрового цветного изображения размером 128 X 128 пикселей отвели 0,5 Мбайт памяти. Каково максимально возможное число цветов в палитре этого изображения?
В7. Дана программа:
Бейсик Паскаль
PROGRAM Unknown; DEFINT А , В, С С = А*В*В IF (А + В>С) THEN С = С + А ELSE С = С - В PRINT С Program Unknown; var А, В, С; integer; begin readin (А, В); С := А*В*В; if (А + В>С) then С := С + А else С С - В; writein (С); end.
Эта программа была выполнена для двух наборов значений А и В: А = 2; В = -1 и А = —2; В = 1. Чему равна сумма двух напечатанных программой чисел?
в 326
В8. Натуральное число преобразуется по следующим правилам. В нем выбирается наибольшая цифра (если таких несколько, то выбирается самая левая) и уменьшается на 1, если у нее есть цифра, стоящая правее ее и меньшая по значению. С полученным числом проделывается то же самое. Преобразование числа прекращается, если его невозможно выполнить, соблюдая указанные условия. Какое число получится из числа 192 837 465?
В9. У исполнителя есть две команды, которым присвоены номера 1 и 2:
1. Прибавь 5. 2. Умножь на 2.
Выполняя первую из них, исполнитель прибавляет к числу 5, а выполняя вторую, удваивает его. Программа для этого исполнителя — это последовательность цифр 1 и 2. Например, программа 21121 преобразует число 1 в число 29. Напишите программу, которая содержит не более 6 команд и позволяет получить то же число 29 из числа -1.
В10. Дан фрагмент таблицы в режиме отображения формул:
А В
2 3 =А$1*В1 -Ь А2
3 1
В ячейках А1 и В1 записаны некоторые числа. Содержимое ячейки В2 было скопировано в ячейку ВЗ, после чего в режиме отображения результатов тот же фрагмент выглядит так:
А В
2 3 1
3 1 0
Какое число занесено в ячейку В1?
В11. В нарушении правил торговли подозреваются четыре работника магазина: Антонов, Борисов, Васильев и Денисов. Торговая инспекция выяснила:
1) если Антонов нарушил правила, то вместе с Борисовым;
н
и
у ?27
2) если Борисов нарушил правила, то Васильев нарушил или Антонов не нарушал их;
3) если Денисов не нарушал правила, то Антонов нарушил, а Васильев не нарушал.
Сколько подозреваемых наверняка нарушили правила торговли?
В12. Известно, что высказывание
(А& B)V(B &А & C)V(C &А)
ложно. Какое наибольшее число истинных высказываний может быть среди высказываний А, В и С?
В13. Для последовательности высказываний А^ при п> 3 выполнено следующее рекуррентное соотношение:
А = А~1 & (А-2 VA„_g).
Сколько истинных высказываний будет среди первых 100 членов последовательности, если А^ и Ад истинны, а Ад ложно?
1СЛЮЧИ 9С ТЕСТОВЫМ ЗАДАНИЯМ
А1 А2 АЗ А4 А5 А6 А7 А8 А9
2 3 1 3 2 3 2 4 2
А10 АН А12 А13 А14 А15 А16 А17 А18
1 2 3 2 2 3 2 2 3
В1 В2 ВЗ В4 В5 В6 В7
7 6,9,18 45 ЖВДИЗБЕЗГА 9 256 -1
В8 В9 В10 В11 В12 В13
142434455 212221 2 1 2 99
1328
Эпилог
Закончилось ваше многолетнее изучение информатики в школе. Оглядываясь на весь пройденный путь (а не только на материал 11 класса), легко различить наиболее значительные вершины, которые, как мы надеемся, вы смогли покорить:
• работа с прикладным программным обеспечением;
• знакомство с миром компьютерных сетей и Интернетом;
• построение компьютерных моделей для решения жизненных задач;
• осознание социальных проблем информатизации общества;
• изучение алгоритмов и знакомство с языками программирования;
• изучение принципов работы самого компьютера.
В современном информационном обществе все вами изученное составляет основу информационной культуры, которой должен владеть каждый.
Оканчивая школу, вы выбираете сферу своих будущих профессиональных интересов. Кто-то ощущает себя гуманитарием, а кого-то влекут науки о природе. Но любому из вас потребуется информатика, поскольку она изучает важнейшие стороны человеческого существования — процессы получения, накопления, передачи и обработки информации. А без информации невозможна никакая продуктивная деятельность!
Возможно, кто-то из вас выберет информатику своей будущей профессией. Тогда вы, вероятнее всего, изучали информатику как профильный курс. Хочется верить, что, знакомясь с этой замечательной наукой по нашему учебнику, вы увидели ее с разных сторон — ведь она столь многогранна! Вы освоили самые разнообразные компьютерные технологии и прикладное программное обеспечение, научились построению информационных моделей процессов и явлений, прикоснулись к социальным аспектам процесса информатизации общества, окунулись в мир компьютерных сетей и Интернета, освоили методы доказательного программирования и глубже изучили принципы работы самого компьютера. Все это хорошая основа для будущей профессиональной деятельности в информационной сфере. Информатика и как наука, и как область человеческой деятельности чрезвычайно востребована в современном обществе. Выбирайте любое ее направление, и вы увидите, как много интересного и полезного ждет вас в этой сфере.
Конечно, для каждой профессиональной сферы характерен свой взгляд на информатику. Но разноликая и в то же время единая в своих основах информатика останется с вами навсегда.
1329
Литература для дополнительного чтения
Андреева Е. Системы счисления и компьютерная арифметика / Е. Андреева, И. Фалина. — М.: ЛБЗ, 2000.
Андреева Е. В. Математические основы информатики / Е. В. Андреева, Л. Л. Босова, И. Н. Фалина. — М.: ЛБЗ, 2005.
Аршинов М. И. Коды и математика / М. И. Аршинов, Л. Е. Садовский. — М.: Наука, 1983.
Введение в криптографию / под общ. ред. В. В. Ященко. — М.: МЦМНО,
1998.
Верещагин Н. К. Вычислимые функции / Н. К. Верещагин, А. Шень. — М.: МЦМНО, 2002.
Гейн А. Г. Задачник-практикум по информатике и информационным технологиям: кн. для учащихся 7—11 кл. общеобразоват. учреждений / А. Г. Гейн, Н. А. 10нерман. — М.: Просвещение, 2003.
Ивашина М. В. Человек и информация: Учеб, пособие для сред. шк. / М. В. Ивашина, А. Г. Гейн, О. В. Брюхова и др.; под ред. А. Г. Гейна, Н. С. Сулимовой. — Екатеринбург: Центр «Учебная книга», 2007. Гурский Ю. Photoshop 7. Трюки и эффекты / Ю. Гурский, Г. Красильникова. — СПб.: Питер, 2004.
Джордин Д. Использование Adobe Photoshop / Д. Джордин, С. Мониц. — М.: Изд. дом «Вильямс», 1999.
Информатика. Задачник-практикум. В 2 т. / под ред. И. Г. Семакина, Е. К. Хеннера. — М.: ЛБЗ, 1999.
Информатика. Энциклопедический словарь для начинающих / под ред.
Д. А. Поспелова. — М.: Педагогика-Пресс, 1994.
Информатика как наука об информации / под ред. Р. С. Гиляревского. — М.: Фаир-Пресс, 2006.
Кении А. Окно в мир Интернета: практическое руководство / А. Кении. — Екатеринбург: У-фактория, 2003.
Кольман Э. Занимательная логика / Э. Кольман, О. Зих. — М.: Наука, 1966. Копылов В. А. Информационное право / В. А. Копылов. — М.: Юристъ, 1997. Кристофидес Н. Теория графов. Алгоритмический подход / Н. Кристофи-дес. — М.: Мир, 1978.
Липский В. Комбинаторика для программистов / В. Липский. — М.: Мир, 1988.
Матвеева Т. А. Информационная культура: Учеб, пособие для сред. шк. / Т. А. Матвеева, А. Г. Гейн, В. В. Мачульский и др. — Смоленск: Ассоциация XXI век, 2007.
Окулов С. М. Основы программирования / С. М. Окулов. — М.: ЛБЗ, 2006. Окулов С. М. Программирование в алгоритмах / С. М. Окулов. — М.: ЛБЗ, 2006.
Шафрин Ю. А. Информационные технологии / Ю. А. Шафрин. — М.: ЛБЗ,
1999.
Шень А. Программирование: теоремы и задачи / А. Шень. — М.: МЦМНО, 1995.
1330
1редметныи указатель
Адаптер сетевой 159 Аддитивный синтез цвета 65 Адрес почтовый электронный 177 Адрес ячейки 107 Алгоритм волновой 230
— Краскала 237
— планирования 249
— Прима 240
— сжатия обратимый 88
— — без потери информации 88
— Хаффмана 83
Атака на компьютерную систему 187 Атрибут тега 131
Баланс цветов 152 Безрезультатная остановка 198 Битрейт 90
Гипертекст 127 Граф 82, 219
— двусвязный 233
— нагруженный 224
— ориентированный 82
— полный 259
— связный 221
д
Демодуляция 164 Дерево 235
— игры 242
— стягивающее 235 Деятельностная грамотность 42 Дизъюнкция 97 Дискретизация 27 Дискретность 189
Длина цепи 230 Дуга графа 82
В
Вентиль 94
Вершина графа 82, 219 Вершины связанные 221
— смежные 219
Вирус компьютерный 191
— перезаписывающийся 192 Витая пара 158
Всемирная информационная паутина 163
Вход устройства 99 Выравнивание по левому краю 121
— по правому краю 121
— по ширине 122 Выход устройства 99
Гамма-коррекция 151 Гиперссылка 127
Запись префиксная 98
— обратная польская 98
— числа с плавающей запятой 112
И
Игра 241
— конечная 242
— с полной информацией 242 Игры эквивалентные 249 Идентификатор конечного пользователя 177
Импликация 98 Инвариант цикла 216
— стратегии 251 Интранет 143
Информатизация общества 12 Информационная грамотность 8
li 33 1
— культура 5
— модель 26
Информационное мировоззрение 6
К
Кабель коаксиальный 158
— оптоволоконный 158 Каркас 235
Кластер 22
Ключевые слова 21, 171 Код префиксный 82
— Хэмминга 77
— числа дополнительный 109
— — прямой 109 Композиция функций 100 Компаньон-вирус 192 Конъюнкция 98 Контейнер 131 Контраст 149
Корень 82, 235 Круг Манселла 70
Л
Лист графа 83
М
Магазин 305 Мантисса числа 112 Маршрут 221
— циклический 221 Маршрутизация 165 Маска IP-адреса 139 Межстрочный интервал 122 Метод упаковки 81 Моделирование 26 Модель информационная 26
— цветопередачи вычитательная 72
— — субтрактивная 72 Модем 164 Модуляция 164
Мост 233 Мультиграф 219
Мультимедийное представление информации 153
Н
Насыщенность цвета 69 Независимые цвета 66 Нормализованная запись числа 112
О
Область применимости алгоритма 199
Обратная связь 35
Операция выравнивания порядков
115
— Пирса 99
— Шеффера 98 Орграф 82
Основание системы счисления 48 Остов графа 235 Отрицание 988 Объект информационный 119
— оцифрованный 119
П
Палитра графического редактора 147
Панель инструментов 146
— параметров 146 Петля 219
Поиск адресный 101
— в глубину 227
— в ширину 229
— тематический 175 Плата сетевая 158 Полусумматор 95 Порядок машинный 113
— числа 112
Применимость алгоритма 198 Принцип информационной открытости 12 Провайдер 164 Программа антивирусная 193
— троянская 192
— шпионская 193 Программа-вакцина 194 Программа-детектор 193 Программа-доктор 193
1332
Программа-полифаг 194 Программа-ревизор 193 Программа-фильтр 194 Проект 32
Протокол информационного обмена 161
Радиус графа 307 Разрядность процессора 108
— ячейки 107
Расстояние между словами 76
— Хэмминга 76 Расширение ASCII 61 Ребро графа 82, 219
— кратное 219 Регистр 108
Редактирование текста 120
Сайт 164
Свойство префиксности 82 Связная компонента 221 Сервер 158
Система доменных имен 167
— счисления 48
— — десятичная 48
— — двоичная 49
— — позиционная 48 Слайд 154
Слово машинное 107 Сложение по модулю 298 Смысловое свертывание 21 Спам 193 Стек 305
Степень вершины 219 Стратегия 241
— выигрышная 243
— магнита 21
— симметричная 254 Строка висячая 122
— красная 122 Сумматор 95 Схема Горнера 53
Таблица смежности 224 Тег 131
Телеконференция 180 Теорема существования конструктивная 203
— чистого существования 203 Тетрада 54
Тождественный нуль 98 Топология сети 158 Точечно-десятичная форма 166 Точка сочленения 233 Триггер 105
У
Универсальный указатель ресурса 169
Управление 31
— по принципу обратной связи 35
Условие Фано 82
Уязвимость компьютерной системы 186
Ф
Формат текста 122 Форматирование текста 122 Функция булева 98
— лимитирующая 209
— тождественная 98
ц
Цвет основной 147
— фоновый 147 Центр графа 307 Цепь 221
— простая 221 Цикл 221
— простой 221
Червь сетевой 192 — файловый 192 Черный ящик 35
1333
ш
Шаблон 120 Шум 74
IP-адрес 165 IRC-сервис 179
Эвристика 249, 259 Эквиваленция 98 Электронная почта 163 Эффект переполнения 115
Я
Яркость цвета 149 Ячейка памяти 107 — таблицы 125
L
login 177 R
RGB-кодирование 67
SR-триггер 105
CMY-кодирование 73 CMYK-кодирование 73
D
DNS 167
TCP/IP 162
и
Unicode 63 URL 169
FAQ-файлы 180 ftp-сервис 178
Н
http 164
W
Web-сайт 164 Web-сервер 164 Web-страница 163 WWW 163
JK-триггер 106 JPEG 88
YCbCr-модель 88
1334
ОглавленЕ^е
Предисловие ............................................
Глава 1. Информационная культура общества и личности....
§ 1. Понятие информационной культуры....................
§ 2. Информационная грамотность — базовый элемент информационной культуры.........................................
§ 3. Социальные эффекты информатизации .................
§ 4. Методы работы с информацией........................
§ 5. Методы свертывания информации .....................
§ 6. Моделирование — краеугольный камень информационного
мировоззрения ......................................
§ 7. Информационные модели в задачах управления ........
§ 8. Модель экономической задачи........................
§ 9. Международные исследования PISA....................
Глава 2. Кодирование информации.
Представление информации в компьютере..........
§ 10. Системы счисления ................................
§ 11. Перевод целых чисел из одной системы счисления в другую § 12. Перевод дробных чисел из одной системы счисления в другую
§ 13. Кодовые таблицы...................................
§ 14. Кодирование цветовой информации ..................
§ 15. Цветовая модель HSB...............................
§ 16. Получение изображений на бумаге...................
§ 17. Коды, обнаруживающие и исправляющие ошибки .......
§ 18. Экономные коды. Алгоритмы сжатия .................
§ 19. Необратимые алгоритмы сжатия......................
§ 20. Обработка информации при помощи компьютера........
§ 21. Булевы функции ...................................
§ 22. Логика оперативной памяти.........................
§ 23. Представление целых чисел в памяти компьютера ....
§ 24. Представление вещественных чисел в памяти компьютера . . § 25. Особенности компьютерной арифметики ..............
Глава 3. Основные информационные объекты.
Их создание и компьютерная обработка ..........
§ 26. Создание и форматирование текста..................
§ 27. Вставка объектов в текст документа ...............
§ 28. Гипертекст .......................................
§ 29. Основы HTML.......................................
§ 30. Гиперссылки в HTML................................
§ 31. Оформление HTML-страницы..........................
§ 32. Объекты других приложений в HTML..................
§ 33. Компьютерные словари и системы перевода текстов...
§ 34. Компьютерная обработка графических информационных объектов ...................................................
Й 335
§ 35. Компьютерная обработка цифровых фотографий .........
§ 36. Компьютерные презентации............................
Глсвсв 4. ТеяекомглунякацЕ^онньае сети. Интернет..........
§ 37. Локальная компьютерная сеть.........................
§ 38. Глобальные компьютерные сети .......................
§ 39. Адресация в Интернете...............................
§ 40. Поисковые системы Интернета ........................
§ 41. Интернет как источник информации ...................
§ 42. Сервисы Интернета ..................................
§ 43. Интернет-телефония..................................
§ 44. Этика Интернета. Безопасность в Интернете...........
§ 45. Информационная безопасность и защита интересов субъектов
информационных отношений............................
§ 46. Защита информации ..................................
ГлБвез 5. 1^сследование сзлгоритмов математическими методами
§ 4 7. Еще раз о понятии «алгоритм».......................
§ 48. Как доказывают применимость алгоритма...............
§ 49. Лимитирующая функция ...............................
§ 50. Инвариант цикла.....................................
Глс^ва 6. Графы и алгоритмы на графах.....................
§ 51. Простейшие свойства графов..........................
§ 52. Способы представления графов .......................
§ 53. Алгоритмы обхода связного графа ....................
§ 54. Мосты и точки сочленения............................
§ 55. Деревья ............................................
§ 56. Каркасы минимального веса ..........................
Глевй ?, ^Tlrpfes и стратегии.............................
§ 57. Дерево игры ........................................
§ 58. Построение стратегии ...............................
§ 59 Инвариант стратегии..................................
§ 60. Игра как модель управления..........................
аСомпьадтерный практикум..................................
Лабораторная работа № 1 (к § 6)
Модель горки. Проверка адекватности модели ............
Лабораторная работа № 2 (к § 8)
Задача о ценообразовании...............................
Лабораторная работа № 3 (к § 11)
Системы счисления с основанием, равным степени числа 2 . . . Лабораторная работа № 4 (к § 17)
Коды, обнаруживающие и исправляющие ошибки.............
Лабораторная работа № 5 (к § 23)
Представление целых чисел в памяти компьютера. Особенности
компьютерной арифметики ...............................
Лабораторная работа № 6 (к § 24 и 25)
Представление вещественных чисел в памяти компьютера. Особенности компьютерной арифметики.......................
НЗЗб
Лабораторная работа № 7 (к § 26)
Создание текстовых информационных объектов ..............
Лабораторная работа № 8 (к § 27)
Вставка объектов в текст ................................
Лабораторная работа № 9 (к § 28)
Создание гиперссылок в тексте............................
Лабораторная работа № 10 (к § 29 и 30)
Знакомство с HTML........................................
Лабораторная работа № 11 (к §31 и 32)
Использование тега <ТаЫе> для формирования HTML-страницы. Публикация документов, подготовленных в Microsoft Word,
в Интернете..............................................
Лабораторная работа № 12 (к § 34)
Знакомство с Adobe Photoshop.............................
Лабораторная работа № 13 (к § 34)
Работа со слоями.........................................
Лабораторная работа № 14 (к § 35)
Редактирование фотографий ...............................
Лабораторная работа № 15 (к § 36)
Создаем презентацию в PowerPoint.........................
Лабораторная работа № 16 (к § 37 и 39)
Знакомимся с компьютерными сетями........................
Лабораторная работа № 17 (к § 40)
Путешествие по страницам Интернета ......................
Лабораторная работа № 18 (к § 40)
Поиск в Интернете........................................
Лабораторная работа № 19 (к § 41)
Выбор профессии и трудоустройство через Интернет.........
Лабораторная работа № 20 (к § 48)
Исследование алгоритмов и программ.......................
Лабораторная работа № 21 (к § 52)
Способы представления графов.............................
Лабораторная работа № 22 (к § 53)
Поиск в глубину .........................................
Лабораторная работа № 23 (к § 53)
Поиск в ширину...........................................
Лабораторная работа № 24 (к § 53)
Волновой алгоритм .......................................
Лабораторная работа № 25 (к § 54)
Мосты и точки сочленения
Лабораторная работа № 26 (к § 55 и 56)
Построение каркасов ....................................
Лабораторная работа № 27 (к § 58)
Построение стратегии на основе списка проигрышных позиций Лабораторная работа № 28 (к § 59)
Построение стратегии на основе инварианта ..............
Лабораторная работа № 29 (к § 60)
Построение стратегии на основе оценочной функции........
Готовимся к Единому государственному экзамену по информатике
Эпилог ....................................................
Литература для дополнительного чтения......................
Предметный указатель.......................................
УДК 373.167.1:004 ББК 32.81я72 Г29
На учебник получены положительные заключения Российской академии наук (№ 10106-5215/496 от 22.10.08) и Российской академии образования (№ 01-5/7д-231 от 02.10.08).
Гейн А. Г.
Г29 Информатика и ИКТ. 11 класс : учеб, для общеобразо-ват. учреждений : базовый и профил. уровни / А. Г. Гейн, А. И. Сенокосов. — 2-е изд. — М. : Просвещение, 2009. — 336 с. : ил. — ISBN 978-5-09-026867-7.
УДК 373.167.1:004 ББК 32.81я72
Учебное издание
ГЕЙН Александр Георгиевич СЕНОКОСОВ Александр Иванович
ИНФОРМАТИКА И ИКТ
11 класс
Учебник для общеобразовательных учреждений
Базовый и профильный уровни
Зав. редакцией Т. А. Бурмистрова. Редактор О. В. Платонова. Художник О. П. Богомолова. Художественный редактор О. П. Богомолова. Компьютерная графика Г. М. Дмитриева, О. Ю. Тупикиной. Техническое редактирование и компьютерная верстка Н. А. Киселевой. Корректоры А. В. Рудакова, Г. Е. Казанцева, Л. С. Вайтман
Налоговая льгота — Общероссийский классификатор продукции ОК 005-93—953000. Изд. лиц. Серия ИД № 05824 от 12.09.01. Подписано в печать 05.12.11. Формат TOxOO/ig. Бумага офсетная. Гарнитура SchoolBookCSanPin. Печать офсетная.
Уч.-изд. л. 25,16 + 0,5 форз. Тираж 7000 экз. Заказ № 4992.
Открытое акционерное общество «Издательство «Просвещение». 127521, Москва,
3-й проезд Марьиной рощи, 41.
Отпечатано в полном соответствии с качеством предоставленных издательством материалов в ОАО «Тверской ордена Трудового Красного Знамени полиграфкомбинат детской литературы им. 50-летия СССР». 170040, г. Тверь, проспект 50 лет Октября, 46.
ISBN 978-5-09-026867-7
Издательство «Просвещение», 2009 Художественное оформление. Издательство «Просвещение», 2009 Все права защищены
ОСГ^^ даРЁМШЛ|Х
иг/
^ 00 0 1 1 0 11 !
тождественная единица X 1 1 1 т 1 I
тождественная X 0 0 1 1
тождественная У 0 1 0 1
отрицание X 1 1 0 ° 1
отрицание У 1 0 1 0 !
дизъюнкция xvy 0 1 1 1
конъюнкция X &у 0 0 0 1
импликация х^у 1 1 0 1
импликация у-^х 1 0 1 1
коимпликация х-^у 0 0 1 0
коимпликация у-^х 0 1 0 0
операция Шеффера х\у 1 1 1 0
сложение по модулю 2 х@У 0 1 1 0
эквиваленция х~у 1 0 0 1
операция Пирса х'\у 1 0 0 0 ^ г
тождественный нуль о 0 0 0 0 ! i •
ОСНОВНЫЕ ЗАКОНЫ БУЛЕВЫХ ОПЕРАЦИЙ
х&у=у&х xvy=yvx
х@у = у@х
АССОЦИАТИВНОСТЬ
7?^
шшш
(х & у) & 2 = X & (у & 2) (xVy)V2 = XV(yV2) (x@y)@z = х@(уфг)
ДИСТРИБУТИВНОСТЬ
(xvy) & 2 = (х & 2)v (у & 2) (х & y)V2 = (XV2)& iyV2) (х@у) & 2 = (х & 2) @(у & 2) (х@у) V2 = (XV2) © iyV2)
ЗАКОНЫ ДЕ МОРГАНА
X & у = х\/у
xvy = X & у
Х& Х = X
XV X = X
ШУУНиЫй
ЗКВИВАЛЕНЦИЯ
г ^'-1 ,ПЛ.Ы.
. / /.V/ : ,=*^«^1.
0^
■ГК
1^. ОСНОВНАЯ ЧАСТЬ ASCII
Двоичный 1 Десятичный Символ Двоичный Десятичный Символ
код код код код
00100000 32 пробел 01010000 80 Р
! 00100001 33 1 01010001 81 Q
00100010 34 01010010 82 R
00100011 35 # 01010011 83 S
00100100 36 $ 01010100 84 Т
00100101 37 % 01010101 85 и
00100110 38 & 01010110 86 V
00100111 39 • 01010111 87 W
00101000 40 ( 01011000 88 X
00101001 41 ) 01011001 89 Y
f 00101010 42 * 01011010 90 Z
1 00101011 43 + 01011011 91 ]
1 00101100 44 t 01011100 92 \
1 00101101 45 - 01011101 93 ]
1 00101110 46 01011110 94
i 00101111 47 / 01011111 95
I 00110000 48 0 01100000 96
1 00110001 49 1 01100001 97 а
1 00110010 50 2 01100010 98 ь
г 00110011 51 3 01100011 99 с
00110100 52 4 01100100 100 d
00110101 53 5 01100101 101 е
00110110 54 6 01100110 102 f
00110111 • 55 7 01100111 103 g
00111000 56 8 01101000 104 h
00111001 57 9 01101001 105 i
00111010 58 01101010 106 j
00111011 59 J 01101011 107 к
00111100 60 < 01101100 108 1
00111101 61 = 01101101 109 m
00111110 62 > 01101110 110 n
00111111 63 ? 01101111 111 0
01000000 64 @ 01110000 112 p
01000001 65 А 01110001 113 q
01000010 66 В 01110010 114 Г
01000011 67 С 01110011 115 s
01000100 68 D 01110100 116 t
01000101 69 Е 01110101 117 u
01000110 70 F 01110110 118 V
01000111 71 G 01110111 119 w
01001000 72 Н 01111000 120 X
01001001 73 1 01111001 121 у
01001010 74 J 01111010 122 z
i 01001011 75 К 01111011 123 {
1 01001100 76 L 01111100 124 1
1 01001101 77 М 01111101 125 }
1 01001110 78 N 01111110 126 ~
1 01001111 79 0 01111111 127 □
МОДЕЛИ RGB-КОДИРОВАНИЯ
ЦВЕТОВОЙ КУБ
■
т
ЛГ
Пурпурный
Голубой
МОДЕЛЬ CMYK
базовый • профильный в н и
Учебно-методический комплект . по информатике включает:
• А. Г. Гейн, А. И. Сенокосов Учебник для 11 класса
С> А. Г. Гейн, Н. А. Юнерман
Тематические тесты. 11 класс
А. Г. Гейн
Задачник-практикум.
10-11 классы
А. Г. Гейн, Н. А. Юнерман Книга для учителя Методические рекомендации к учебнику 11 класса
N
А. Г Гейн
Информатика и ИКТ.
Программы общеобразовательных учреждений. 10-11 классы
Программы для проведения практических занятий и методические рекомендации размещены на сайтах:
https://kadm.math.usu.ru (на страничке А.Г. Гейна) https:// prosv. ru
____®_______
ПРОСВЕЩЕНИЕ
ИЗДАТЕ^1ЬСТ80
ISBN 978-5-09-026867-7
9 785090 268677