Красный свитер состоит из бесконечного количества хлопковых нитей. Пряди, сплетенные в вертикальный узор «V», выглядят изысканно. Красная ткань приятна глазу, как и сочетание, сочетание цвета, узора и блеска. Из множества вертикальных полосок на свитере мне бросилась в глаза одна полоска. Нет, полоска не стала ни блестящей, ни более стильной. У него была одна прядь, которая выделялась из гобелена.

Текущая программа грамотности данных, Непальская программа грамотности данных, которая находится на пути к тому, чтобы стать первой в своем роде и чрезвычайно успешной, является свитером. Из всех прекрасных аспектов, прекрасных воспоминаний и захватывающих моментов, которые он принес, я говорю здесь об одном: разные названия некоторых организаций заставили меня задуматься о прекрасной структуре данных, структуре данных с непересекающимися множествами. Непересекающаяся память структуры данных выделялась так же, как хлопковая нить в красном свитере.

Воображение

Допустим, я ничего не знаю об организациях, которые там участвуют. Названия организаций настолько чужды мне, что я не могу понять их названия. Есть также несколько участников из одной организации. Интересно, что есть некоторые организации, которые имеют разные названия. Например, участники Катмандуского университета назвали три названия — Катмандуский университет, КУ и КУСОМ. Поскольку я не понимаю значения имен, мне нужен способ сгруппировать одинаковые имена вместе. Именно здесь я буду использовать замечательную структуру данных, структуру данных непересекающихся множеств.

Данные

Я не беру здесь все имена. Я бы предпочел взять несколько, чтобы нам было легче визуализировать.

Имена

Nyaya Health Nepal, The Kathmandu Post, Университет Катманду, Британский колледж, Национальная кампания за образование, Экантипур, Возможный, KU, Women Lead Nepal, Британский колледж, KUSOM, NCE, Haushala, Лаборатория подотчетности, Катманду Вишвавидхьялая, KMG

Статистика

16 участников назвали 16 разных названий, но реальных организаций, которые они представляли, было 7. Наша задача — сгруппировать все имена в 8 групп.

Отображение

Чтобы сгруппировать одинаковые имена, мне нужно какое-то сопоставление. Я спрашиваю людей там и получаю следующее сопоставление.
KU = Университет Катманду
Возможно = Nyaya Health Nepal
KU = KUSOM
KUSOM = Катманду Вишвавидхьялая
Британский колледж = Британский колледж
Экантипур = The Kathmandu Post
Женщины возглавляют Непал = Haushala
Экантипур = KMG
NCE = Национальная образовательная кампания

Теперь, используя имена и отображение, мне нужно создать группы. Это может показаться простым здесь с меньшим количеством данных, но когда мы выполняем ту же задачу для миллионов данных, нам нужна надежная структура данных для работы. Здесь мы вводим и работаем с подходящей структурой данных для нашей задачи Union Find.

Итак, что такое Union-Find?

Union-Find — это структура данных с непересекающимися множествами, в которой данные делятся на разные непересекающиеся множества, и доступны два метода — объединение и поиск.

Союз

Union — это функция, которая объединяет две точки данных или группы. Например, объединение КУ и КУСОМ помещает их обоих в одну группу. Они не только помещают объединяемые элементы в одну и ту же группу, но и всю группу, которую они представляют.

Находить

Find находит объект и возвращает «основной» объект этой группы. Например, если KU, KUSOM и Университет Катманду находятся в одной группе, а KUсчитается основным объектом, метод find для объекта KUSOM возвращает KU.

Итак, почему бы нам не создать структуру данных Union-Find в Python.

Структура данных Union-Find в Python

Теперь давайте применим эту структуру данных к нашим именам.

Объединяя имена, используя сопоставления, формируют группы, здесь мы визуализируем группы.

Забрать

Здесь мы увидели, как можно группировать с помощью структуры данных Union-Find. Мы можем не только объединить два элемента/группы, но и быстро найти головной элемент любой группы, используя эту структуру данных. Реализация может быть сделана более эффективной с помощью нескольких настроек, но основная идея Union-Find такова, как она реализована здесь. Структура данных Union-Find может использоваться в ситуациях, когда есть непересекающиеся наборы, которые постоянно объединяются, или когда метод find часто вызывается с непересекающимися наборами.

So

Аппаратное обеспечение — это средство, программное обеспечение — мясо. Информатика связана с мышлением, решением проблем и прикладной математикой, а не с компьютерами, аппаратным обеспечением и электроникой. Когда я был в детстве, я неправильно понимал термины. Когда я думал о терминах, связанных с компьютером, таких как информатика, компьютерные системы, компьютерная безопасность и т. д., мне на ум пришла картина электроники, микропроцессора, кабелей и портов. Это заставило меня больше не изучать информатику. Только когда я узнал, что информатика — это алгоритмы, прикладная математика и программирование, я решил серьезно заняться информатикой и сделать на этом карьеру. Что меня больше всего вдохновляет в компьютерных науках, так это их широкий спектр приложений в реальном мире. Помимо очевидных огромных применений компьютерных наук, столь вездесущих, что мы видим в нашей повседневной жизни, есть небольшие проблемы, которые мы можем решить, используя методы компьютерных наук — вроде той, что я сделал выше.

Названия организаций и фактические организации взяты здесь, чтобы дать контекст и приложение к структуре данных, Union-Find. Здесь не гарантируется, что имена являются настоящими именами. Также не гарантируется, что имена в одной и той же группе действительно представляют одну и ту же организацию. Автор ничего не претендует ни на организации, ни на программу, ни на имена.