АвторТема: Определение всех степеней кровного родства для двух персон по файлу Гедком  (Прочитано 45550 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mich GlitchАвтор темы

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Вам спасибо!!!

Список заслал своему помощнику на выверку.

:)

Оффлайн Mich GlitchАвтор темы

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Anode,
Оценили список?
Ваш город оказался глубже лучше.
Но у меня выбора особого не было - жена с английским была не особо в ладах и требовала что-нибудь всенепременейше с французским.  :o
Английский ей потом всё равно пришлось учить. :)

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Anode,
Оценили список?
Ваш город оказался глубже лучше.
Но у меня выбора особого не было - жена с английским была не особо в ладах и требовала что-нибудь всенепременейше с французским.  :o
Английский ей потом всё равно пришлось учить. :)

Ага. Вроде с предыдущих лет не сильно изменилось, что радует.
Показательно, что все немногочисленные канадские города - впереди самого безопасного американского. Неслучайно мне не понравился Сан-Франциско, когда я там жил (когда конечно было с чем сравнивать). Тянуло назад, в свою уютную деревню, в Канадовку ;)
А во французкую часть мне и не светило никогда: французского никогда и близко не было. На английском-то еле-еле общался по началу (это даже после английской спецшколы со 2го класса и универа, да ещё и в детсаду английский учил немного).

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Случай второй: анализируемые персоны отсутствуют в предковых листах друг друга. Количество поколенных переходов до общего предка у обоих одинаковое.
В этом случае, количество букв обозначает количество поколений.
Даю примеры (произвольные) и полные наименования степени родства.
М, М - братья,
ММ, ЖМ - двоюродные братья,
МЖМ, ЖММ - троюродные братья,
...
МММММММ, ЖЖММЖЖМ - семиюродные братья.


Это как раз тот случай - когда нужно использовать мою нотацию, а не съедать первую букву.
Потому как в Вашей нотации
М, М - это не только братья, но и сёстры, а также сестра и брат, брат и сестра.

В моей же нотации atree (когда корневой узел указывается явно и не "съедается") - всё в порядке, и маппинг однозначный:

М, М - сама персона (если мужчина)
Ж, Ж - сама персона (если женщина)
ММ, ММ - братья
ЖМ, ЖМ - сёстры
ММ, ЖМ - брат,сестра
ЖМ, ММ - сестра, брат
(это всё через отца, аналогично - через мать)

и то же самое будет с другими уровнями (вы почему-то говорите только о мужчинах, но есть и женщины)

МММ, МЖМ - двоюродные братья,
ЖММ, ЖЖМ - двоюродные сёстры,
МММ, ЖЖМ - брат,сестра
ЖЖМ, МЖМ - сестра, брат
... и другие сочетания
ММЖМ, МЖММ - троюродные братья,
...
ММММММММ, МЖЖММЖЖМ - семиюродные братья.
...
ММ, МЖМ (разница 1 поколенный интервал) - дядя, племянник,
но также
ЖМ, МЖМ (разница 1 поколенный интервал) - тётя, племянник,
ММ, ЖЖМ (разница 1 поколенный интервал) - дядя, племянница,
ЖМ, ЖЖМ (разница 1 поколенный интервал) - тётя, племянница

нельзя терять информацию о корневом ноде (иначе опять же какие-то соглашения выводятся в программу), тем более - когда будет маппинг терминов родства! В моём же случае путь самодостаточен и для маппинга родства, и для всего остального. Дерево уже самодостаточно и корневой узел ничем не отличается от других узлов по структуре.

Оффлайн Mich GlitchАвтор темы

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Anode,
Потомок (явно указанный по имени, или Ай-Ди)- цепочка предков. Есть смысл.
Пол потомка без указания имени (т.е. Ваша буква) - цепочка предков.
 Бессмыслица.

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

Вы путаете логичность представления с алгоритмом программирования.

Резюмирую: при написании программы Вы можете добавлять сколь угодно чего угодно; при выводе же результата - лишнее надо убрать.

Оффлайн Mich GlitchАвтор темы

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
Рассмотрим кажущуюся нелогичность.
Мы имеем цепь потомок - предковая цепочка - предок.
Десятком разных способов я воплю о том, что для потомка М, или Ж указывать не надо. В цепочке этой указывать не надо. А вот обозначение М, или Ж для предка у меня возражений не вызывает.

Во-первых, цепочка именно предковая. Т.е. для обозначения предков. Обозначение пола персоны - это одно поле. В предковой цепочке просто выписан пол каждого из предков.

Во-вторых, по последнему предку нас в большой мере интересует именно его (её) пол. Имя же зачастую просто неизвестно.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Anode,
Потомок (явно указанный по имени, или Ай-Ди)- цепочка предков. Есть смысл.
Пол потомка без указания имени (т.е. Ваша буква) - цепочка предков.
 Бессмыслица.

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

Вы путаете логичность представления с алгоритмом программирования.

Резюмирую: при написании программы Вы можете добавлять сколь угодно чего угодно; при выводе же результата - лишнее надо убрать.

Как и в случае гаплотипов (descending.txt репорт), где я специально убираю первую букву (даже флаг для обрезания первой буквы добавил), - можно также было бы делать и здесь. Но смысл есть именно в цепочке людей, а не в цепочке предков-линий. Как раз у меня - цепочка. А у Вас - половинки (линии). Где почему-то обрезали потомков.
Бессмыслица будет в маппинге - когда одну и ту же комбинацию надо маппить по-разному (используя скрытый код).
Попробуйте записать маппинг пути на:

МММ, МЖМ - двоюродные братья,
ЖММ, ЖЖМ - двоюродные сёстры,
МММ, ЖЖМ - брат,сестра
ЖММ, МЖМ - сестра, брат

в Вашем случае:

ММ, ЖМ - двоюродные братья,
ММ, ЖМ - двоюродные сёстры,
ММ, ЖМ - брат,сестра
ММ, ЖМ - сестра, брат

(это не маппинг! это one-to-many!)

Опять же только для Вашего представления линий (а не цепочек) - можно обрезать/потерять информацию, но зачем? Если информация о персонах уже есть. Не согласен с Вашим видением.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Рассмотрим кажущуюся нелогичность.
Мы имеем цепь потомок - предковая цепочка - предок.
Десятком разных способов я воплю о том, что для потомка М, или Ж указывать не надо.
А я воплю - что надо!
Надо указывать - иначе не понятно только из дерева - племянница это или племянник, внук или внучка! Это большая разница: тётя или дядя!

В случае родства двух персон терминальные узлы (потомки) - особо нуждаются в поле. С ним - представление дерева будет самодостаточным!

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Продолжаю развитие темы, начатой вот тут.

Постановка задачи: определить все кровно-родственные связи для двух произвольных персон из файла Гедком.

Вывод должен быть сделан в следующем виде (пример):

Степан Васильевич Иванов vs Игорь Олегович Вершинин
1) Двоюродный брат, двоюродный брат, ММ, ЖМ, Иосиф Виссарионович Иванов.
2) Двоюродный брат, двоюродный брат, МЖ, ЖЖ, Агафья Лукинична Мальцева.
3) Четвероюродный брат, четвероюродный брат, МЖММ, ЖЖЖМ, Август Поликарпович Дурново.
4) Четвероюродный брат, четвероюродный брат, МЖМЖ, ЖЖЖЖ, Ирина Викторовна Польская.
5) Восьмиюродный дядя, восьмиюродный племянник, ЖЖЖММЖММ, ММЖМММЖЖМ,
 Лука Силович Кабыздох.
6) Восьмиюродный дядя, восьмиюродный племянник, ЖЖЖММЖМЖ, ММЖМММЖЖЖ, Ксения Ивановна.

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

Проиллюстрируйте, пожалуйста, почему вывод идёт в виде многих строк. Как возникло два двоюродных брата? Мы же не спускаемся вниз до потомков, а рассматриваем 2 дерева только предков.
Две произвольные персоны имеют один (наикратчайший) путь через ближайшего общего предка, т.е. выходом будет одна строка, типа:

Имя1 vs Имя2
родство, родство, ММММММММЖЖМММММММЖММММММММММММЖЖЖЖМММММММ, МЖЖММЖЖМ

У них только один кратчайший путь, соединяющий их друг с другом (в примере выше - предком мужского пола)


Оффлайн Mich GlitchАвтор темы

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
в Вашем случае:

ММ, ЖМ - двоюродные братья,
ММ, ЖМ - двоюродные сёстры,
ММ, ЖМ - брат,сестра
ММ, ЖМ - сестра, брат

Пардон, где Вы увидели мой случай?!

Мой случай - это Вася Пупкин и Вова Путкин = двоюродные братья ММ, ЖМ.

Ваше же МММ, МЖМ - двоюродные братья (без указания имён) - это просто отвлечённые двоюродные братья. Если это нужно для программирования - это оправдано. Если делать такой вывод (без указания имён этих самых братьев), то в нём абсолютно никакого смысла. Если же имена указать то получится редондантщина, типа, двоюродные братья мужчина Вася Пупкин и мужчина Вова Путкин.

Оффлайн Mich GlitchАвтор темы

  • Genus regis
  • Сообщений: 36936
  • Страна: ca
  • Рейтинг +3773/-48
  • Y-ДНК: J2b1
  • мтДНК: H6a1a5a
И не мешайте в одну кучу алгоритмы и вывод.
Правильная программа - это чёрный ящик. Заказчика интересует только то, что входит (в заданном формате) и что выходит (опять же, в стандартном виде).
То что внутри - это проблемы программиста.
:)

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
На мой взгляд, должны быть отражены все связи на глубине 40 поколений.
Это перекрывает все разумные пределы (тех же Рюриковичей).

Вот как выглядит полная матрица родственных отношений (только для мужчин) на глубине родства троюродного:
прадед
дед, двоюродный дед
отец, дядя, двоюродный дядя
референтная персона, брат, двоюродный брат, троюродный брат
сын, племянник, двоюродный племянник
внук, внучатый племянник
правнук

Какие все связи? У двух персон, допустим пятиюродных братьев
ММЖМММ, МЖММММ
существует только один путь к М

На рисунке ниже - 2 дерева всех восходящих предков. На каком-то этапе имеется общий предок. Естественно - все предки этого общего предка (обозначены красным) - будут также общими предками двух персон id1, id2. Поэтому они нас не интересуют.
Путь (единственный минимальный) от id1 до id2 - и есть форма родства двух персон.


Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Пардон, где Вы увидели мой случай?!

Мой случай - это Вася Пупкин и Вова Путкин = двоюродные братья ММ, ЖМ.

Ваше же МММ, МЖМ - двоюродные братья (без указания имён) - это просто отвлечённые двоюродные братья. Если это нужно для программирования - это оправдано. Если делать такой вывод (без указания имён этих самых братьев), то в нём абсолютно никакого смысла. Если же имена указать то получится редондантщина, типа, двоюродные братья мужчина Вася Пупкин и мужчина Вова Путкин.

Имена я и не собирался скрывать. Речь шла не об именах, а о путях - чтобы они
были самодостаточными даже без маппинга названий.
Маппинг я тоже не считал чёрным ящиком. Если нет имён на каком-то из языков - полные пути несут достаточно информации.
Внутри маппинга всё равно для всех языков должны быть мои:
МММ, МЖМ - двоюродные братья,
ЖММ, ЖЖМ - двоюродные сёстры,
МММ, ЖЖМ - брат,сестра
ЖММ, МЖМ - сестра, брат

Если выведем (не имея маппинга для какого-то языка)

ММ, ЖМ - то непонятно - кто там на самом деле.
Дядя от тёти отличается по написанию, наверное, во всех языках.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
И не мешайте в одну кучу алгоритмы и вывод.
Правильная программа - это чёрный ящик. Заказчика интересует только то, что входит (в заданном формате) и что выходит (опять же, в стандартном виде).
То что внутри - это проблемы программиста.
:)

Я всегда стараюсь создавать такие выводы - чтобы они были как можно более самодостаточны и меньше "индирекшенов" и условностей нужно было бы знать - чтобы правильно и легко обработать информацию. Поэтому всегда против суррогатных ключей, прятания логики или информации в соглашения, "спрятанные" узлы итд.

Лучше выдать больше информации (конечно, структурированной) - чем меньше. В случае как atree так и вышеобсуждаемом - первая буква несёт информацию. В контексте этого репорта она вам кажется редандонтной. Но это потому, что Вы используете неявное соглашение и маппинг. В моём случае - даже маппинга не нужно - для понимания: племянник это или племянница, дядя это или тётя.

Оффлайн Anode

  • Группа N
  • *
  • Сообщений: 1423
  • Страна: ca
  • Рейтинг +147/-0
  • PS1 -> TT1 -> EE1 -> PS2
  • Y-ДНК: N1c1
  • мтДНК: H10a1, U5b1
Да ладно, замнём о первой букве: я уже сказал, что специально для Вас можно урезать букву - как это делается во втором репорте.
Иначе ведь будем спорить до ночи.

Лучше ответьте, пожалуйста, на вопрос выше: откуда взялось много персон.
(как начал думать о задаче - возникают вопросы, которых на первый взгляд не было)

 

© 2007 Молекулярная Генеалогия (МолГен)

Внимание! Все сообщения отражают только мнения их авторов.
Все права на материалы принадлежат их авторам (владельцам) и сетевым изданиям, с которых они взяты.