"Информатика (в 3 частях)", Семёнов А.Л., Рудченко Т.А.
Мешок цепочек — это набор цепочек, в котором повторы не исчезают. Склеивание двух цепочек означает приписывание второй к концу первой. Чтобы склеить два мешка, соединяют каждый элемент первого мешка с каждым элементом второго, сохраняя порядок и кратность результатов. Тема нужна для построения новых наборов цепочек: она помогает не пропустить пары, правильно посчитать одинаковые ответы и отличить пустую цепочку от пустого мешка.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Мешок цепочек — это набор цепочек, в котором одинаковые цепочки могут встречаться несколько раз. Например, {«а», «а», «б»} содержит две цепочки «а» и одну «б». Это нужно, чтобы учитывать не только наличие элемента, но и число его появлений.
Склеивание цепочек — приписывание второй цепочки к концу первой без разделителя. Так, «ко» и «т» образуют «кот». Определение помогает сразу видеть порядок частей результата.
Склеивание мешков цепочек — образование всех цепочек, получаемых склеиванием каждого элемента первого мешка с каждым элементом второго. Если в первом мешке два элемента, а во втором три, рассматривают шесть пар. Такое правило не позволяет случайно пропустить возможный результат.
Кратность элемента — количество раз, которое цепочка встречается в мешке. Если один и тот же результат породили четыре пары элементов, его кратность равна четырём. Поэтому одинаковые результаты не сокращают, а подсчитывают.
Склеивание мешков строится из обычного склеивания отдельных цепочек. Сначала выбирают один элемент первого мешка, затем по очереди соединяют его с каждым элементом второго мешка. После этого выбирают следующий элемент первого мешка и снова перебирают весь второй мешок. Такой способ гарантирует, что для каждого элемента будут рассмотрены все возможные продолжения.
Нельзя соединять только элементы с одинаковыми номерами, потому что номер не задаёт особого правила выбора. Например, у мешков {«а», «б»} и {«1», «2»} нужны пары «а» с «1», «а» с «2», «б» с «1» и «б» с «2». Если взять только две пары по позициям, два допустимых результата потеряются. Полный перебор нужен именно потому, что любой элемент одного мешка может сочетаться с любым элементом другого.
Повторы в исходных мешках влияют на кратность результата. Если цепочка «а» записана в первом мешке дважды, каждая её копия образует отдельную пару с каждым элементом второго мешка. Поэтому при склеивании {«а», «а»} и {«1», «1», «2»} результат «а1» появляется четыре раза, а «а2» — два раза. Записи одинаковых результатов не удаляют, иначе потеряется информация о числе породивших их пар.
Порядок склеивания задаётся самими мешками: сначала записывают цепочку из первого, потом цепочку из второго. При перестановке частей обычно получается другая цепочка: «а» и «б» дают «аб», а обратное склеивание — «ба». Особые случаи следуют из определения: у пустого мешка нет элементов и, значит, нет пар для образования результата. Пустая цепочка, напротив, является элементом и не меняет цепочку, к которой её приписывают.
| Ситуация | Что образуется | Что учитывать |
|---|---|---|
| Склеивание двух цепочек | Одна цепочка из двух частей | Вторая часть приписывается справа |
| Склеивание двух мешков | Результаты для всех пар элементов | Каждый элемент первого мешка соединяется с каждым элементом второго |
| Одинаковые цепочки в исходных мешках | Повторяющиеся результаты | Сохраняется кратность, то есть число породивших пар |
| Пустой мешок среди исходных | Пустой мешок | Нет элементов, значит, нет пар |
| Пустая цепочка среди элементов | Другая цепочка без изменения | Пустая цепочка не равна пустому мешку |
Таблицу удобно использовать как проверку перед решением: сначала определить, что именно склеивается, затем выбрать правило. В последнем столбце собраны условия, из-за которых чаще всего меняется ответ. Особенно внимательно сравнивайте повторяющиеся элементы с пустым мешком.
Условие. Склеить цепочки «ко» и «т». Нужно определить, какая из них первая, и убрать мысленную границу между частями. Разделитель между цепочками в результате не записывается.
Ответ: «кот».
Условие. Склеить мешки {«а», «б»} и {«1», «2»}. Нужно получить результат для каждой пары, а не только для элементов, стоящих на одинаковых местах. Порядок мешков уже задан условием.
Ответ: {«а1», «а2», «б1», «б2»}.
Условие. Склеить мешки {«а», «а»} и {«1», «1», «2»} и указать кратность каждой цепочки. Две записи «а» считаются двумя элементами, как и две записи «1». Поэтому одинаковый текст результата может появиться от разных пар.
Ответ: «а1» имеет кратность 4, «а2» — кратность 2; результат можно записать как {«а1», «а1», «а1», «а1», «а2», «а2»}.
Склеивают только элементы с одинаковыми номерами. Так делают по аналогии с попарным сравнением списков и получают неполный ответ. Проверьте себя: для каждого элемента первого мешка должен быть просмотрен весь второй мешок.
Меняют порядок частей цепочки. Ошибка возникает, когда ученик считает склеивание перестановкой частей. Проверьте направление: результат начинается элементом первого мешка, поэтому «а» и «б» дают «аб».
Удаляют повторяющиеся результаты. Так происходит, если принять мешок за множество и оставить каждую цепочку один раз. Проверьте число пар: каждая пара должна увеличить кратность своего результата.
Считают пустую цепочку пустым мешком. Эти объекты похожи по названию, но пустая цепочка является элементом, а пустой мешок элементов не содержит. Проверьте запись: цепочка может входить в фигурные скобки мешка, а пустой мешок не даёт ни одной пары.
До этой темы нужно знать, что такое цепочка и как приписать одну цепочку к другой. Без этого трудно определить границу частей и правильный порядок результата. Полезно уметь читать цепочки слева направо.
Склеивание связано с различием между мешком и множеством. В мешке повторы сохраняются, поэтому одинаковые результаты имеют кратность. Это правило отличает работу с мешками от простого перечисления уникальных элементов.
Операция пригодится при построении новых наборов цепочек и описании действий над ними. Перебор всех пар развивает навык систематического поиска вариантов. Позже такая идея встречается при составлении комбинаций и обработке наборов данных.
Чем мешок цепочек отличается от обычного множества?
В мешке один и тот же элемент может встречаться несколько раз, а в множестве повтор обычно записывают только один раз. Поэтому для мешка учитывают не только состав, но и кратность каждой цепочки.
Нужно ли учитывать повторяющиеся цепочки?
Да, каждый повтор считается отдельным элементом мешка. Он может породить новые результаты, поэтому одинаковая цепочка в ответе иногда появляется несколько раз.
В каком порядке склеивать цепочки из двух мешков?
Сначала берут цепочку из первого мешка, затем приписывают к её концу цепочку из второго. Поэтому склеивание «а» и «б» даёт «аб», а не «ба».
Как определить, сколько раз цепочка появится в результате?
Нужно посчитать все пары элементов, которые после склеивания дают эту цепочку. Каждая такая пара увеличивает её кратность на один.
Что получится при склеивании с пустым мешком или пустой цепочкой?
Если один из исходных мешков пуст, пар элементов нет, поэтому результатом будет пустой мешок. Пустая цепочка является элементом и приписывание её к другой цепочке не меняет эту цепочку.
Склеивание мешков цепочек