?

Log in

No account? Create an account

67_itmo


Группа К4132 СПбГУ ИТМО


Previous Entry Share Next Entry
Работа №5: Интеллектуальное администрирование генеалогического форума
matholimp wrote in 67_itmo
Разработайте структуру анкеты и смоделируйте работу «интеллектуальной» программы, обрабатывающей большой массив анкет. Для иллюстрации используйте собственную родословную, а также 2-3 исторических персонажей.
Как известно, в России действует Закон о защите персональных данных, запрещающий выкладывать в интернете большие массивы информации, в том числе, включающей ФИО, даты рождения и т.п. Ещё до принятия этого закона многие пользователи скрывали личную информацию, опасаясь действий злоумышленников. С другой стороны, растёт интерес к восстановлению и изучению родословных. Ваша задача – решить эту проблему, не вступая в конфликт с требованиями закона.
Ваша программа должна отслеживать содержимое анкет пользователей и сравнивать их на предмет поиска возможного дублирования. По умолчанию, все вводимые пользователем данные видны только ему самому и этой программе (но не программисту или администратору форума). Каждый пользователь может вводить анкеты не только за себя, но также за своих близких родственников и предков. Прежде всего, при обнаружении родственников, система должна сообщить об этом обоим пользователям, предложив им открыть друг другу взаимный доступ, чтобы согласовать введенную ими информацию (в частности, исправить ошибки).
В большинстве случаях анкеты будут заполнены лишь частично, что не позволит достоверно установить факт совпадения. Тогда программа сначала должна будет задать пользователям уточняющие вопросы, чтобы снять возникшие сомнения (подтвердить факт родства или опровергнуть его). Формат анкеты должен облегчать эту проверку.
Восходящая родословная в норме представляет собой двоичное дерево, для кодирования вершин которого удобно использовать троичные цифры N, O, P. Здесь О означает фиксацию какого-либо человека, N – переход от него на одно поколение вверх по материнской линии, а Р – по отцовской. В частности, NО – мать, а РО – отец выбранного человека; NРО – бабушка по отцовской линии, РNО – дедушка по материнской и т.д. К сожалению, реальность значительно сложнее: есть внебрачные дети, «биологические» и «юридические» родители, информация о старших поколениях часто утрачена. Наконец, разные линии могут выводить на одного и того же предка. В этом случае нужно зафиксировать тождество соответствующих слов, а родословную этого предка исключить из дерева (иначе пришлось бы дублировать записи по всем вышестоящим предкам).
Нисходящая родословная гораздо сложнее. Для каждого человека нужно каким-то образом упорядочить его детей (сквозной нумерацией или отдельными нумерациями по каждому браку).


  • 1
  • 1