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