পরিবার ট্রি সফ্টওয়্যার মধ্যে চক্র


1594

আমি কয়েকটি পরিবার ট্রি সফ্টওয়্যার (সি ++ এবং কিউটিতে লেখা) এর বিকাশকারী। আমার কোনও গ্রাহক আমাকে একটি বাগ রিপোর্ট মেল না করা পর্যন্ত আমার কোনও সমস্যা হয়নি। সমস্যাটি হ'ল গ্রাহকের নিজস্ব মেয়ে নিয়ে দুটি সন্তান রয়েছে এবং ফলস্বরূপ, ত্রুটির কারণে সে আমার সফ্টওয়্যারটি ব্যবহার করতে পারে না।

এই ত্রুটিগুলি পারিবারিক গ্রাফ প্রক্রিয়াজাতকরণ সম্পর্কে আমার বিভিন্ন দাবি এবং আক্রমণকারীদের ফলাফল (উদাহরণস্বরূপ, একটি চক্র হাঁটার পরে, প্রোগ্রামে বলা হয়েছে যে এক্স উভয়ের বাবা এবং পিতামহ হতে পারে না)।

সমস্ত ডেটা জোর দেওয়া বাদ দিয়ে কীভাবে আমি এই ত্রুটিগুলি সমাধান করতে পারি?



30
আপনি যদি আপনার পরিবার গাছকে যথেষ্ট পিছনে সন্ধান করেন তবে আপনি নিজের সমস্যার চেয়ে এই সমস্যাটি প্রায়শই ঘন ঘন ঘনিয়ে আনবেন। গাছের উপস্থাপনা ত্যাগ করা বেদনাদায়ক হতে পারে তবে শেষ পর্যন্ত আরও সঠিক হবে।
থমাস

55
অসম্ভব জিনিস, কেবল অসম্ভব বিষয়গুলির জন্য আপনার দৃ add়তা যুক্ত করা উচিত নয়। চক্রগুলি হ'ল সুস্পষ্ট জিনিস যা কোনও পারিবারিক গাছের গ্রাফে সম্ভব নয় ... কোনও পদ্ধতির মাধ্যমে কেউই নিজের পূর্বপুরুষ হতে পারে না। এই অন্যান্য দাবিগুলি কেবল বোগাস এবং এগুলি সরানো উচিত।
পগড

44
পোষা প্রজননের জগতে এটি মোটেও মূর্খ প্রশ্ন নয়। কন্যা পিতার, মা থেকে পুত্র, বোন থেকে ভাই, নাতি-নাতনী থেকে দাদু-দাদির কাছে এখানে প্রমিত কৌশল এবং পোষা প্রজননকারীদেরও পারিবারিক বৃক্ষের সফ্টওয়্যার প্রয়োজন। আমার বিশুদ্ধ "ব্রেড" আমার ¤% # &।
ক্যালিসিন

31
প্রথম চাচাত ভাইদের বিয়ে করা ভিক্টোরিয়ান ইংল্যান্ডে খুব সাধারণ ছিল , বিশেষত উচ্চ শ্রেণীর মধ্যে (পরিবারের মধ্যে অর্থ রাখার এটি একটি দুর্দান্ত উপায় ছিল)। উদাহরণস্বরূপ, চার্লস ডারউইন তার প্রথম চাচাত ভাই, এমা ওয়েডগউডকে বিয়ে করেছিলেন। যে কোনও পরিবার ট্রি সফ্টওয়্যারকে এ জাতীয় পরিস্থিতিতে সমর্থন করা দরকার।
rtPress

উত্তর:


727

দেখে মনে হচ্ছে আপনার (এবং / অথবা আপনার সংস্থা) একটি পারিবারিক গাছ কী হওয়ার কথা তা নিয়ে একটি মৌলিক ভুল বোঝাবুঝি।

আমাকে স্পষ্ট করে বলতে দাও, আমি এমন একটি সংস্থার জন্যও কাজ করি যা এর পোর্টফোলিওতে একটি পরিবার গাছ রয়েছে (এর অন্যতম পণ্য হিসাবে) এবং আমরা একই ধরণের সমস্যার সাথে লড়াই করছি।

সমস্যাটি, আমাদের ক্ষেত্রে এবং আমি আপনার কেসটিও ধরে নিই, জিইডকোম ফর্ম্যাট থেকে এসেছে যা একটি পরিবারের কী হওয়া উচিত সে সম্পর্কে চরম মতামত। তবে এই ফর্ম্যাটটিতে পারিবারিক গাছটি দেখতে কেমন লাগে সে সম্পর্কে কিছু গুরুতর ভুল ধারণা রয়েছে।

জিইডকোমের অনেকগুলি বিষয় রয়েছে যেমন সমলিঙ্গের সম্পর্কের সাথে বেমানান, অজাচার, ইত্যাদি ... যা বাস্তব জীবনে আপনি যা ভাবেন তার চেয়ে বেশি প্রায়ই ঘটে থাকে (বিশেষত 1700-1800 এর পরে যখন ফিরে আসেন)।

আমরা আমাদের পারিবারিক গাছকে প্রকৃত বিশ্বে যা ঘটে তা মডেল করে রেখেছি: ইভেন্টগুলি (উদাহরণস্বরূপ, জন্ম, বিবাহ, বাগদান, ইউনিয়ন, মৃত্যু, গ্রহণ ইত্যাদি)। যৌক্তিকভাবে অসম্ভবকে ব্যতীত আমরা এগুলিতে কোনও বিধিনিষেধ রাখি না (উদাহরণস্বরূপ, কেউ নিজের পিতা-মাতা হতে পারে না, সম্পর্কের জন্য দুটি ব্যক্তির প্রয়োজন হয়, ইত্যাদি ...)

বৈধতার অভাব আমাদের আরও একটি "সত্যিকারের বিশ্ব", সহজ এবং আরও নমনীয় সমাধান দেয়।

এই নির্দিষ্ট ক্ষেত্রে হিসাবে, আমি দৃ univers়তাগুলি সার্বজনীনভাবে ধরে রাখে না বলে তারা মুছে ফেলার পরামর্শ দেব।

ইস্যুগুলি প্রদর্শনের জন্য (এটি উত্থাপিত হবে) আমি প্রয়োজন হিসাবে অনেক বার একই নোডটি আঁকার পরামর্শ দেব, সেগুলির একটি নির্বাচন করার জন্য সমস্ত অনুলিপি আলোকিত করে সদৃশকে ইঙ্গিত করে।


32
এটি সঠিক পদ্ধতির মতো দেখায় এবং আরও জটিল সমস্যাগুলি সনাক্ত করার জন্য এটি প্রসারিত করা সহজ। আপনি ইভেন্টগুলির মধ্যে "বি এর আগে ঘটেছিল" এর একটি সেট তৈরি করতে পারেন। উদাহরণস্বরূপ, কোনও ব্যক্তি তাদের জড়িত অন্য কোনও ইভেন্টের আগেই জন্মগ্রহণ করেছিল। এটি একটি নির্দেশিত গ্রাফ। তারপরে আপনি পরীক্ষা করতে পারেন যে গ্রাফটিতে কোনও চক্র নেই। এই প্রশ্নটি স্ট্যাকওভারফ্লোতে দেখুন। সময় ভ্রমণের আবিষ্কার না হওয়া পর্যন্ত এটি ঠিক হওয়া উচিত।
পল হ্যারিসন

41
@ পল-হ্যারিসন এটি যদি কেবলমাত্র সরল। পুরানো রেকর্ডগুলিতে (এমনকি নতুনও) তারিখের অসঙ্গতি রয়েছে। জন্মের আগে ব্যাপটিজম, একাধিক জন্মের রেকর্ড ইত্যাদি ... তাই কিছুটা হলেও সরকারী রেকর্ডে সময় বেড়ানো থাকে। আমরা এই বেমানান ডেটা মঞ্জুর করি। অনুলিপিগুলির ক্ষেত্রে অ্যাপ্লিকেশনগুলিকে "জন্ম" রেকর্ডটি বিবেচনা করা উচিত তা নির্দেশ করার জন্য আমরা ব্যবহারকারীদের অনুমতি দিই। এবং যদি পাওয়া যায় তবে আমরা ভাঙা টাইমলাইনগুলি নির্দেশ করব।
বার্ট গ্যোথালস

38
@ বেন-ভয়েগ্ট জিইডকোম হ'ল চার্চ অফ জেসুস ক্রাইস্টের উত্তর-পূর্বের সন্তদের দ্বারা নির্মিত একটি ফর্ম্যাট। স্পেসিফিকেশনটিতে স্পষ্টভাবে বলা হয়েছে যে বিবাহ (এমএআরআর) পুরুষ এবং মহিলাদের মধ্যে হওয়া উচিত। একই লিঙ্গ বিবাহ বা অজাচারের জন্য এসএসও ট্যাগ ব্যবহার করা উচিত (এসোসিয়েটস), এছাড়াও বন্ধুত্ব বা প্রতিবেশী হওয়ার ইঙ্গিত দেয়। এটি স্পষ্ট যে একই যৌন বিবাহ এই অনুমানের মধ্যে দ্বিতীয় শ্রেণির সম্পর্ক। আরও একটি নিরপেক্ষ বৈশিষ্ট্য পুরুষ মহিলা সম্পর্কের দাবি করবে না।
বার্ট গোথালস

1
@ বার্ট গোয়েটালস: আপনি জিইডকমকে এমন কিছু প্রোগ্রামের সাথে বিভ্রান্ত করছেন যা সমকামী বিবাহ (পিএএফ, উত্তরাধিকার) সমর্থন করে না। গেডকোম "0 @ এফ 1 @ এফএএম / 1 এইচএসবি @ আই 1 @ / 1 এইচএসবি @ আই 2 @" এর মতো নির্মাণকাজকে আবদ্ধ করে না এবং আপনার সফ্টওয়্যারটি বেছে নিলে সমকামী বিবাহকে সমর্থন করে।
পিয়ের

1
@ পিয়ার আপনি সিস্টেমটিকে সত্যই প্রতারণা করতে পারেন। এটি সরাসরি 5.5.1 ডক্স থেকে: "মারআর AR বিবাহ}: = একটি আইনী, সাধারণ আইন, বা স্বামী এবং স্ত্রী হিসাবে পুরুষ এবং একজন মহিলার পারিবারিক ইউনিট তৈরির রীতিগত ঘটনা event" ( homepages.rootsweb.ancestry.com/~pmcbride/gedcom/55gcappa.htm ) আপনি দেখতে পাচ্ছেন, এখানে আর কোনও লিঙ্গ বিবাহ নেই।
বার্ট গোথালস

563

আপনার বক্তব্য শিথিল করুন।

নিয়মগুলি পরিবর্তন করে নয়, যা সম্ভবত আপনার 99.9% গ্রাহকদের তাদের ডেটা প্রবেশের ভুলগুলি ধরাতে খুব সহায়ক।

পরিবর্তে, "তবুও যুক্ত করুন" এর সাথে একটি সতর্কতার সাথে "সম্পর্ক যোগ করতে পারে না" ত্রুটি থেকে এটিকে পরিবর্তন করুন।


143
খুব সম্ভাবনাময় পরিস্থিতির মুখোমুখি হওয়ার সময় , এটির মধ্যে একজন ব্যবহারকারী সাধারণত ভুল করেই তা করতেন, ব্যবহারকারীকে সতর্কতা দেখানো ভাল ধারণা। এটা ভাল প্রতিক্রিয়া। তবে তারপরে ব্যবহারকারীরা সত্যই নিশ্চিত হন যে তারা চান ahead সুতরাং আমি মনে করি এটি একটি ভাল উত্তর, এমনকি যদি এটি কীভাবে বাদাম এবং বোলে না যায়।
থোমাস্রুটার

15
ভাল উত্তর! আমি শুধু ভাবছি, এই জাতীয় সফটওয়্যার কীভাবে "আমি আমার নিজের দাদা" ( youtube.com/watch?v=eYlJH81dSiw ) পরিস্থিতি পরিচালনা করবে?
জাউর নাসিবভ

4
এটি আসলে কোনও উত্তর নয়, কারণ আমি মনে করি সমস্যাটি আসলে গাছের আড়াল থেকে আসে? তবে এটি একটি ভাল পরামর্শ।
বিডওয়াকফিল্ড

3
@ বিডওয়াকফিল্ড: প্রশ্ন ছিল "আমি কীভাবে সমস্ত ত্রুটিগুলি সমাধান না করে এই ত্রুটিগুলি সমাধান করব?" আমি বিশ্বাস করি যে আমি উত্তর দিয়েছি।
বেন ভয়েগট

2
@ বেন এটি নির্ভর করে কিসের উপর নির্ভর করে। যদি তারা অসীম লুপগুলি বা মারাত্মক ত্রুটিগুলি ঘটতে বাধা দেয় তবে আপনি কার্যকরভাবে দৃ remove়তাগুলি মুছে ফেলার পরামর্শ দিচ্ছেন। যদি তারা কোনও ব্যবহারকারীকে কোনও সম্ভাব্য ভুল সম্পর্কে সতর্ক করার জন্য উপস্থিত থাকে তবে আপনার উত্তরটি ভাল।
rm999

224

পারিবারিক গাছগুলির সমস্যা এখানে: সেগুলি গাছ নয়। সেগুলি অ্যাসাইক্লিক গ্রাফ বা ডিএজিগুলি পরিচালিত হয়। যদি আমি মানব প্রজননের জীববিজ্ঞানের নীতিগুলি সঠিকভাবে বুঝতে পারি তবে কোনও চক্র থাকবে না।

আমি যতদূর জানি, এমনকি খ্রিস্টানরাও কাজিনদের মধ্যে বিবাহ (এবং এইভাবে শিশুদের) গ্রহণ করে, যা পারিবারিক গাছকে পারিবারিক ডিএজে পরিণত করবে।

গল্পটির নৈতিকতা: সঠিক ডেটা কাঠামো চয়ন করুন।


7
ভিট্রো এবং যৌন প্রজননের জন্য এটিতে নির্দেশিত প্রতিটি নোডের 1 বা 2 সর্বাধিক নোডের আরও বিধিনিষেধের প্রয়োজন হবে। যদিও সত্যিকারের জীবনে আরও সত্য হতে পারে, আপনি পিতা পক্ষের অনিশ্চিত বংশধরের জন্য একাধিক ড্যাশযুক্ত রেখাগুলিকে মঞ্জুরি দিতে পারেন (এটি সর্বদা পরিষ্কার যে মা কে, তবে কেবল ডিএনএ পরীক্ষার মাধ্যমে বাবা কে নিশ্চিত হতে পারেন এবং এটি আজও খুব কমই করা হয়েছে), বা এমনকি উভয় জন্য গ্রহণ গ্রহণ করা হয়।
ম্যানিক্স্রোক

7
@ মানিক্স্রোক - যেহেতু এই প্রশ্নটি বিরল ক্ষেত্রে সম্পর্কিত, তাই আমি দৃ to়ভাবে বলতে চাই যে মা কে তা সর্বদা পরিষ্কার নয়। গৃহীতকরণ, পরিত্যক্ত শিশু, সারোগেট মমস ইত্যাদি সমস্ত বিষয় জটিল করে তুলতে পারে।
পিটার পুনরুদ্ধার করুন

9
এটি অ্যাসাইক্লিক অগত্যা নয়, তাই না? মানুষের বিয়ে-নানী।
এড রপ্পল

13
দাদীর সাথে তার বিয়ে করা মানুষ নিজেকে তার নিজের দাদা হিসাবে তৈরি করবে না এবং একটি চক্র যুক্ত করবে। তাদের যদি সন্তান হয় তবে এটি একটি নন-সাইক্লিং নিয়মিত গ্রাফ প্রান্ত হবে।
exDM69

11
এটি আসলে দুটি অ্যাডিজি প্যারেন্টেজ গ্রাফ এবং আইনী সম্পর্কের গ্রাফ রয়েছে। সাধারণত একই, তবে একের চেয়ে বেশি ভিন্ন আশা করতে পারে।
জ্যাকসটেস্টডার

115

আমি অনুমান করি যে আপনার এমন কিছু মূল্য রয়েছে যা এমন কোনও ব্যক্তিকে অনন্যভাবে চিহ্নিত করে যার উপরে আপনি নিজের চেকগুলি বেজ করতে পারেন।

এটি একটি কৃপণ। ধরে রেখে আপনি কাঠামোটিকে একটি গাছ রাখতে চান, আমি এটি প্রস্তাব করি:

এটি ধরুন: Aতার নিজের কন্যা সন্তানের রয়েছে।

Aনিজেকে প্রোগ্রাম যোগ Aএবং B। একবার বাবার ভূমিকায়, আসুন একে প্রেমিক বলি।

এমন একটি is_same_for_out()ফাংশন যুক্ত করুন যা আপনার প্রোগ্রামের আউটপুট উত্সাহিত অংশকে বলে যে Bঅভ্যন্তরীণভাবে যাওয়া সমস্ত লিঙ্কগুলি Aডেটা উপস্থাপনের দিকে যাওয়া উচিত ।

এটি ব্যবহারকারীর জন্য কিছু অতিরিক্ত কাজ করবে তবে আমার ধারণা এটি বাস্তবায়ন এবং বজায় রাখা তুলনামূলকভাবে সহজ হবে।

এটি থেকে বিল্ডিংয়ের মাধ্যমে, আপনি কোড সিঙ্কিং Aএবং Bঅসঙ্গতি এড়াতে কাজ করতে পারেন ।

এই সমাধান অবশ্যই নিখুঁত নয়, তবে এটি প্রথম পদ্ধতির।


9
সম্ভবত এই জাতীয় "প্রক্সি" নোডগুলি অবশ্যই উপযুক্ত সমাধান। তবে কীভাবে ব্যবহারকারীদের আপত্তিজনক ব্যবহার না করে সেগুলি কীভাবে ইউজার ইন্টারফেসে রাখা যায় তা আমার কোনও ধারণা নেই। আমি আপনাকে বলতে পারি যে সত্যিকারের লোকদের (বিশেষত আপনার গ্রাহকদের) সাথে সম্পর্কিত সফ্টওয়্যারটি লেখা সহজ নয়।
পার্টিক হেস

6
এটি কখনও শেষ হয় না - বি এর নতুন পুত্র তার নিজের চাচা হবে। আমি প্রোগ্রামের জন্য একটি সম্পূর্ণ ফেরত বিবেচনা করবে!
বো পারসন

3
@ উইল এ: এবং তারপরে বুঝতে পারছেন যে তিনিও তাঁর নিজের মা, এবং তার ছোট আত্মাকে সময় এজেন্সিতে নিয়োগ করেন?
নাল সেট

2
এক সিস্টেমের মধ্যে ডেটারের নকলকরণ (এবং সিঙ্ক করা) খারাপ অভ্যাস। এটি নির্দেশ করে যে সমাধানটি সর্বোত্তম এবং এটি পুনর্বিবেচনা করা উচিত। যদি অতিরিক্ত (সদৃশ) নোড তৈরির প্রয়োজন হয় তবে এটি প্রক্সি হিসাবে চিহ্নিত করুন এবং ডেটাটি পড়ুন এবং মূল নোডে লিখুন।
বার্ট গোথালস

84

আপনার সফ্টওয়্যারটির জন্য সত্যিকার অর্থে কী গুরুত্ব দেয় সেদিকে আপনার ফোকাস করা উচিত । লাইসেন্সের মূল্যের জন্য এটি কোনও ভোক্তার পক্ষে কাজ করার জন্য সময় কী ব্যয় হয়? সম্ভবত না।

আমি আপনাকে এই গ্রাহকের কাছে ক্ষমা চাওয়ার পরামর্শ দিচ্ছি, তাকে বলুন যে তার পরিস্থিতি আপনার সফ্টওয়্যারটির সুযোগের বাইরে নয় এবং তাকে ফেরত প্রদান করতে হবে।


3
খুবই সত্য. তবে অন্যান্য সম্ভাব্য সমস্যাগুলিও অন্যদের দ্বারা উত্থাপিত একই ধরণের সমস্যার সাথে বিবেচনা করুন weigh
অধ্যাপক ফ্যালকেন চুক্তি

2
অবশ্যই. যুক্তিটি হ'ল: যদি এটি একটি অ-সমালোচক অ্যাপ্লিকেশনটিতে বিরল প্রান্তের মামলা হয় তবে আপনাকে কোনও কিছু ঠিক করার বা প্রয়োগ করার দরকার নেই। যদি এটি সত্যিই আপনার ব্যবহারকারীদের ক্ষতি করে, তবে এটিতে কাজ করার মূল্য রয়েছে।
ক্রিস্টোফেমল

10
সম্ভবত প্রত্যেকেরই তার পূর্বসূরীতে কোথাও অজাচারের কিছু ঘটনা রয়েছে। সুতরাং যদি কেউ পরিবারের ইতিহাস (খুব) গভীরভাবে খনন করে তবে আপনি সেই ধাক্কাটি মারতে পারবেন।
ডেটনল্ফ

1
কিছু অদ্ভুত পরিস্থিতির (বংশবৃদ্ধির রয়্যালটি, ফ্রিটজল ইত্যাদি) বংশবৃদ্ধি গাছ তৈরি করা সফ্টওয়্যারটির বৈধ ব্যবহার।
বুলওয়ার্সেটর

1
একটি পারিবারিক ট্রি সফ্টওয়্যার যা দ্বিতীয় চাচাত ভাইকে বিবাহ করতে দেয় না তা অকেজো। প্রায় সব পরিবারেই এর কমপক্ষে একটি মামলা রয়েছে। যে কারণে আমি মনে করি মূল উদাহরণটি কার্যকরভাবে তৈরি হয়েছে for
Fuzzy76

79

আপনার অ্যাট্রেইড পরিবারকে (আধুনিক, দুনে বা প্রাচীন, ওডিপাস রেক্স ) একটি পরীক্ষার কেস হিসাবে সেট আপ করা উচিত ছিল । পরীক্ষার কেস হিসাবে স্যানিটাইজড ডেটা ব্যবহার করে আপনি বাগগুলি খুঁজে পাবেন না।


2
দুঃখের বিষয়, বেশিরভাগ লোকেরা প্রথমে তাদের সিস্টেমগুলি ভঙ্গকারী প্রান্তের মামলার পরিবর্তে 'ঠিক আছে' ডেটা ভাবেন।
sjas

59

"গো" এর মতো ভাষাগুলির দৃ .়তা না থাকার এটি অন্যতম কারণ। এগুলি এমন কেসগুলি পরিচালনা করতে ব্যবহার করা হয় যা আপনি সম্ভবত প্রায়শই ভাবেননি। আপনার কেবল অসম্ভবকেই বলা উচিত, কেবল অসম্ভব নয় । পরবর্তী কাজগুলি হল যা দৃser় প্রতিপত্তিগুলি একটি খারাপ খ্যাতি দেয়। যতবার আপনি টাইপ করবেন assert(, দশ মিনিটের জন্য দূরে হাঁটুন এবং সত্যই এটি সম্পর্কে ভাবেন।

আপনার বিশেষত বিরক্তিকর ক্ষেত্রে, এটি অনুমেয় এবং বিস্ময়কর যে উভয়ই বিরল তবে সম্ভাব্য পরিস্থিতিতে বোধগম্য হবে। সুতরাং, কেবলমাত্র "এই সফ্টওয়্যারটি আপনি যে দৃশ্যের উপস্থাপন করেছেন সেটি পরিচালনা করার জন্য ডিজাইন করা হয়নি" বলতে গেলে এটি আপনার অ্যাপ্লিকেশানে এটি পরিচালনা করুন।

আপনার মহান, মহান, বড় দাদা আপনার পিতা হওয়া অসম্ভব বলে মনে করা একটি যুক্তিসঙ্গত কাজ।

যদি আমি আপনার সফ্টওয়্যারটি পরীক্ষা করার জন্য ভাড়া করা একটি টেস্টিং সংস্থার হয়ে কাজ করতাম তবে অবশ্যই আমি সেই দৃশ্য উপস্থাপন করতাম। কেন? প্রতিটি কিশোর এখনও বুদ্ধিমান 'ব্যবহারকারী' ঠিক একই কাজ করতে চলেছে এবং ফলস্বরূপ 'বাগ রিপোর্ট' উপভোগ করবে।


5
'কখন যুক্তি ব্যবহার করতে হবে' যুক্তিটির সাথে একমত হন; দেখুন না যে এটি কীভাবে 'কিছু ভাষায় জোর দিয়েছে, গো দেয় না' to
ফুজি

2
@ রেড হিউ - কখনও কখনও সংকলকগুলি অসম্ভবকে ... সম্ভব করে তোলে। অ্যাপস () প্রয়োগের ক্ষেত্রে জিসিসির কয়েকটি সংস্করণ ভাবেন -10 == 10।
টিম পোস্ট

2
@ রেড হিউ: দাবির পুরো বিষয়টি হ'ল ডকুমেন্ট এবং পরীক্ষার শর্ত যা সর্বদা সত্য (বা মিথ্যা) হওয়া উচিত। এটি আপনাকে (এবং অন্যদের) জিনিসগুলিকে "স্থিরকরণ" থেকে এমনভাবে রাখতে সহায়তা করে যাতে এই অসম্ভব অসম্ভব কেসগুলি উদ্ভূত হয়, ততক্ষণে তারা স্পষ্টভাবে (সূক্ষ্মভাবে নয়) অ্যাপ্লিকেশনটি ভেঙে ফেলবে। যদি কোনও "অসম্ভব" কেস উপস্থিত হওয়ার কোনও বৈধ কারণ থাকে, তবে আপনি অত্যধিক জোর দিয়েছিলেন।
সিএইচও

1
@ সিএইচও @ টিম পোস্ট আমি কেবল বোঝার চেষ্টা করছি যে কেন দৃ as় প্রতিজ্ঞাবদ্ধি না করা ভাল জিনিস যেহেতু আপনারা বেশিরভাগই একমত যে জোর দেওয়া গুরুত্বপূর্ণ।
অ্যারেন

5
জোর দেওয়া (বা দাবি-মত কোড) অপ্রাসঙ্গিক। গো এর মতো ভাষাগুলিতে কোড ডেটা কাঠামো সম্পর্কে অনুমান করতে পারে এবং করবে; এটি কেবলমাত্র দাবিগুলি দলিল করতে পারে না এবং দাবিগুলি প্রয়োগ করে না। নীচের লাইন: অ্যাপ্লিকেশনটিতে একটি বাগ রয়েছে।
টমি ম্যাকগুইয়ার

41

আমি এ জাতীয় খারাপ পরিস্থিতি সম্পর্কে মন্তব্য করা ঘৃণা করি, তবে আপনার সমস্ত আক্রমণকারীকে পুনরায় জাগ্রত না করার সহজ উপায় হ'ল আপনার গ্রাফটিতে একটি ভুতুড়ে ভার্টেক্স তৈরি করা যা অজাচারী বাবার কাছে প্রক্সি হিসাবে কাজ করে।


37

সুতরাং, আমি পারিবারিক ট্রি সফ্টওয়্যারটিতে কিছু কাজ করেছি। আমি মনে করি আপনি যে সমস্যার সমাধানের চেষ্টা করছেন সেটি হ'ল অনন্ত লুপগুলিতে না গিয়ে গাছটি হাঁটাতে সক্ষম হবেন - অন্য কথায় গাছটি অ্যাকাইক্লিকাল হওয়া দরকার।

যাইহোক, দেখে মনে হচ্ছে আপনি দৃting়ভাবে বলছেন যে কোনও ব্যক্তি এবং তাদের পূর্বপুরুষদের মধ্যে কেবল একটিই পথ রয়েছে। এটি গ্যারান্টি দেবে যে কোনও চক্র নেই, তবে খুব কঠোর। জীবতাত্ত্বিকভাবে বলতে গেলে বংশধরতা একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ (ডিএজি)। আপনার ক্ষেত্রেটি অবশ্যই একটি অবক্ষয়জনক ঘটনা, তবে বড় ধরণের গাছগুলিতে এই ধরণের জিনিসটি সর্বদা ঘটে।

উদাহরণস্বরূপ, আপনি যদি প্রজন্মের n তে আপনার 2 ancest n পূর্বপুরুষদের দিকে তাকান, যদি কোনও ওভারল্যাপ না থাকে তবে আপনার জীবিত লোকের চেয়ে 1000 খ্রিস্টাব্দে আপনার আরও পূর্বপুরুষ থাকতেন। সুতরাং, ওভারল্যাপ হতে পারে।

তবে, আপনি চক্রগুলি অবৈধ, কেবলমাত্র খারাপ ডেটা পেতে চান না। আপনি যদি গাছটি অনুসরণ করছেন, তবে চক্রগুলি অবশ্যই মোকাবেলা করা উচিত। আপনি প্রতিটি স্বতন্ত্র অ্যালগরিদমে বা লোডে এটি করতে পারেন। আমি এটি ভারে করেছি।

একটি গাছে সত্য চক্র সন্ধান করা কয়েকটি উপায়ে করা যেতে পারে। ভুল উপায় হ'ল প্রতিটি পূর্বপুরুষকে প্রদত্ত ব্যক্তি থেকে চিহ্নিত করা এবং ট্র্যাশিংয়ের সময়, আপনি যে ব্যক্তির সাথে পদক্ষেপ নিতে যাচ্ছেন সে যদি ইতিমধ্যে চিহ্নিত হয়, তবে লিঙ্কটি কেটে দিন। এটি সম্ভাব্য সঠিক সম্পর্ক বিচ্ছিন্ন করবে। এটি করার সঠিক উপায় হ'ল প্রতিটি ব্যক্তি থেকে শুরু করা এবং প্রতিটি পূর্বপুরুষকে সেই ব্যক্তির পথে চিহ্নিত করা। নতুন পথে যদি সাবপথ হিসাবে বর্তমান পথটি থাকে তবে এটি একটি চক্র, এবং এটি ভেঙে দেওয়া উচিত। আপনি পাথগুলিকে ভেক্টর হিসাবে সংরক্ষণ করতে পারেন <বিউল> (এমএফএমএফ, এমএফএফএফএমএফ, ইত্যাদি) যা তুলনা এবং স্টোরেজটিকে খুব দ্রুত করে তোলে।

চক্র সনাক্ত করার জন্য আরও কয়েকটি উপায় আছে যেমন দুটি পুনরুক্তি পাঠানো এবং সেগুলি কখনও সাবসেট পরীক্ষার সাথে সংঘর্ষে আছে কিনা তা দেখার জন্য, তবে আমি স্থানীয় সঞ্চয় পদ্ধতিটি ব্যবহার করে শেষ করেছি।

এছাড়াও মনে রাখবেন যে আপনাকে লিঙ্কটি প্রকৃতপক্ষে আলাদা করতে হবে না, আপনি কেবলমাত্র এটি একটি সাধারণ লিঙ্ক থেকে একটি 'দুর্বল' লিঙ্কে পরিবর্তন করতে পারেন যা আপনার কিছু অ্যালগরিদম অনুসরণ করে না। কোন লিঙ্কটিকে দুর্বল হিসাবে চিহ্নিত করার জন্য চয়ন করার সময় আপনিও যত্ন নিতে চাইবেন; কখনও কখনও আপনি জন্ম তারিখের তথ্য দেখে চক্রটি কোথায় ভাঙতে হবে তা নির্ধারণ করতে পারেন, তবে প্রায়শই আপনি কোনও কিছুই বের করতে পারবেন না কারণ এতগুলি ডাটা অনুপস্থিত।


সেই অনুমানগুলি সম্পর্কে যত্নবান; একজন পুরুষ এবং একজন মহিলা পিতা বা মাতা দেওয়া হয় না যখন লোকেরা খাপ খাইয়ে নেয়, বা লেসবিয়ানরা যারা নিজেকে পিতামাতা হিসাবে বিবেচনা করে, অদূর ভবিষ্যতে তারা এমনকি জৈবিকভাবে পিতামাত , কমপক্ষে মেয়েদের মধ্যে থাকতে সক্ষম হতে পারে । এই বিষয়টির জন্য, আমরা যদি মানুষের কাছে ডলি প্রয়োগ করি, এমনকি "একজন ব্যক্তির দুটি স্বতন্ত্র বাবা-মা আছে" এমন ধারণাও বহির্ভূত।
অগ্রজাগ

1
@ আগ্রাজাগ, হ্যাঁ তাই আমি চক্র সনাক্তকরণের জন্য "বায়োলজিক্যালি স্পিকিং" নির্দিষ্ট করেছি। এমনকি জৈবিকভাবেও অনেকগুলি সম্ভাব্য সমস্যা রয়েছে যেমন সারোগেট মায়েরা এবং কৃত্রিম গর্ভধারণ। আপনি যদি পিতামাতাদের সংজ্ঞায়িত করার জন্য গ্রহণ এবং অন্যান্য অ-জৈবিক পদ্ধতিগুলিও মঞ্জুর করেন তবে একটি গাছে একটি যথাযথ সত্য চক্র থাকা সম্ভব - উদাহরণস্বরূপ, সম্ভবত কেউ বৃদ্ধ হওয়ার পরে তাদের পিতামহাকে গ্রহণ করে এবং নিজের যত্ন নিতে আর সক্ষম হয় না । মানুষের পারিবারিক জীবন সম্পর্কে অনুমান করা সর্বদা জটিল। তবে সফ্টওয়্যারটি লেখার সময় আপনার কিছু অনুমান করা দরকার ..
tfinniga

36

মূর্খ প্রশ্নের জন্য আরও একটি মজাদার গুরুতর উত্তর:

আসল উত্তরটি হ'ল উপযুক্ত ডেটা স্ট্রাকচার ব্যবহার করুন। কোনও চক্রবিহীন খাঁটি গাছ ব্যবহার করে মানব বংশপরিচয় সম্পূর্ণরূপে প্রকাশ করা যায় না। আপনার কোনও ধরণের গ্রাফ ব্যবহার করা উচিত। এ ছাড়া আর কোনও পদক্ষেপ নেওয়ার আগে একজন নৃতাত্ত্বিক বিশেষজ্ঞের সাথে কথা বলুন, কারণ "পশ্চিমা পুরুষতান্ত্রিক একক বিবাহিত বিবাহের" সবচেয়ে সাধারণ ক্ষেত্রে এমনকি বংশপরিচয়কে মডেল করার চেষ্টা করার মতো আরও অনেক জায়গাতেই একই রকম ত্রুটি করা যেতে পারে।

এমনকি যদি আমরা এখানে আলোচনা হিসাবে স্থানীয়ভাবে নিষিদ্ধ সম্পর্কগুলি উপেক্ষা করতে চাই, পারিবারিক গাছের মধ্যে চক্র চালু করার জন্য প্রচুর নিখুঁত আইনী এবং সম্পূর্ণ অপ্রত্যাশিত উপায় রয়েছে।

উদাহরণস্বরূপ: http://en.wikedia.org/wiki/Cousin_marriage

মূলত, কাজিনের বিয়ে কেবল সাধারণ এবং প্রত্যাশিতই নয়, এ কারণেই মানুষ হাজার হাজার ছোট পরিবারগোষ্ঠী থেকে বিশ্বব্যাপী billion বিলিয়ন জনসংখ্যায় চলে গেছে। এটি অন্য কোনও উপায়ে কাজ করতে পারে না।

বংশ বংশ, পরিবার এবং বংশের কথা আসলেই খুব কম ইউনিভার্সাল রয়েছে। মাসি কারা হতে পারে বা কারা বিয়ে করতে পারে বা কারা সন্তানদের উত্তরাধিকারের উদ্দেশ্যে আইনী করে দেওয়া হয়, সে সম্পর্কে বিশ্বব্যাপী বা ইতিহাসের কোথাও কিছু ব্যতিক্রম দ্বারা বিচলিত হয়ে উঠতে পারে এমন নিয়মাবলী সম্পর্কে প্রায় কোনও কঠোর অনুমান।


9
আপনার মন্তব্য আমাকে বহু বিবাহ করার কথা ভাবায়। বংশগত সফ্টওয়্যার যা কেবলমাত্র যৌন প্রজননকে মডেল করে তার জন্য শুক্রাণু এবং ডিমের সাথে সংযুক্ত একটি নাম প্রয়োজন হতে পারে তবে পারিবারিক কাঠামোর বিস্তৃত সংজ্ঞা না দেয়।
স্টিভ কালেমকিউইচ

বংশগত সফ্টওয়্যার প্রায়শই মডেলটিতে একাধিক স্বামী / স্ত্রীকে অনুমতি দেবে। আপনি কীভাবে মডেলটি ভিউতে প্রদর্শন করবেন তা একটি প্রোগ্রামের মধ্যেও সরবরাহ করা হয়েছে "মোড" এর উপর নির্ভর করে widely
টড হপকিনসন

20

সম্ভাব্য আইনী জালিয়াতিগুলি একদিকে রেখে, এটি অবশ্যই মনে হয় যে নোডটি একমাত্র এবং একমাত্র ব্যক্তি হতে পারে তা ধরে নেওয়ার পরিবর্তে আপনাকে একটি পরিবারের গাছে একটি 'নোড' একটি পূর্বসূরি ব্যক্তি হিসাবে বিবেচনা করা উচিত।

গাছের নোডে কোনও ব্যক্তি পাশাপাশি উত্তরাধিকারীদেরও অন্তর্ভুক্ত করুন - এবং তারপরে আপনার গাছে আরও গভীরভাবে আরও একটি নোড থাকতে পারে যার মধ্যে একই ব্যক্তির সাথে বিভিন্ন উত্তরসূরি রয়েছে।


13

কয়েকটি উত্তর দৃser়তা / আক্রমণকারী রাখার উপায় দেখিয়েছে তবে এটি দৃ as়তা / আক্রমণকারীদের অপব্যবহারের মতো বলে মনে হচ্ছে। দৃser়তাগুলি নিশ্চিত হওয়া উচিত যে সত্য হওয়া উচিত এমন কোনওটি সত্য, এবং আক্রমণকারীরা এমনটি নিশ্চিত করে যা পরিবর্তন হয় না এমন কিছু পরিবর্তন হয় না।

আপনি এখানে যা বলছেন তা হ'ল অযৌক্তিক সম্পর্কের অস্তিত্ব নেই। স্পষ্টত তারা কি বিদ্যমান, তাই আপনার কথন অবৈধ। আপনি এই প্রতিস্থাপনের চারপাশে কাজ করতে পারেন, তবে আসল বাগটি দৃser়তার মধ্যে রয়েছে। দৃ .়তা অপসারণ করা উচিত।



5

বংশবৃত্তীয় ডেটা চক্রীয় এবং অ্যাসাইক্লিক গ্রাফের সাথে খাপ খায় না, তাই যদি চক্রের বিরুদ্ধে আপনার দাবি থাকে তবে আপনার সেগুলি সরিয়ে দেওয়া উচিত।

কাস্টম ভিউ তৈরি না করে একটি দৃশ্যে এটিকে পরিচালনা করার উপায় হ'ল চক্রীয় পিতামাতাকে "ভূত" পিতামাতার মতো আচরণ করা। অন্য কথায়, যখন কোনও ব্যক্তি একই ব্যক্তির পিতা এবং পিতামহ উভয়ই হয়, তখন দাদার নোডটি সাধারণত দেখানো হয়, তবে পিতা নোডকে "ভূত" নোড হিসাবে উপস্থাপন করা হয় যার একটি সরল লেবেল থাকে ("দাদা দেখুন") ) এবং দাদাকে নির্দেশ করে।

গণনা করার জন্য আপনাকে চক্রীয় গ্রাফগুলি পরিচালনা করতে আপনার যুক্তিটি উন্নত করতে হবে যাতে চক্র থাকলে কোনও নোড একাধিকবার দেখা না যায়।


4

সর্বাধিক গুরুত্বপূর্ণ বিষয়টি avoid creating a problem, তাই আমি বিশ্বাস করি যে একটি চক্র এড়াতে আপনার সরাসরি সম্পর্ক ব্যবহার করা উচিত ।

যেমনটি @মার্মিওয়ার্ডস বলেছেন, # "ফ্রিটস্লাল.এইচ" অন্তর্ভুক্ত করুন।

অবশেষে আমাকে বলতে হবে recheck your data structure। সম্ভবত সেখানে কিছু ভুল হচ্ছে (সম্ভবত দ্বিপক্ষীয় লিঙ্কযুক্ত তালিকাটি আপনার সমস্যার সমাধান করে)।


4

জোর দেওয়া বাস্তবতা টিকে না

সাধারণত দাবিগুলি বাস্তব বিশ্বের ডেটার সাথে যোগাযোগকে টিকিয়ে রাখে না। আপনি কোন ডেটা নিয়ে ডিল করতে চান এবং কোনটি সুযোগের বাইরে রয়েছে তা নির্ধারণ করা সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের প্রক্রিয়ার অংশ।

চক্রীয় পরিবারের গ্রাফ

পরিবার "গাছ" সম্পর্কিত (বাস্তবে এটি চক্র সহ পুরো অঙ্কিত গ্রাফ), একটি সুন্দর উপাখ্যান রয়েছে:

আমি একটি বিধবা বিবাহিত যার একটি বড় মেয়ে ছিল। আমার বাবা, যিনি প্রায়শই আমাদের দেখতে যেতেন, আমার সৎ-কন্যার প্রেমে পড়েছিলেন এবং তাকে বিয়ে করেছিলেন। ফলস্বরূপ, আমার বাবা আমার পুত্র হন, এবং আমার কন্যা আমার মা হন। কিছু সময় পরে, আমি আমার স্ত্রীকে একটি ছেলে দিয়েছিলাম, যে আমার বাবার ভাই এবং আমার মামার ভাই। আমার বাবার স্ত্রী (তিনিও আমার মেয়ে এবং আমার মা) একটি ছেলে পেয়েছিলেন got ফলস্বরূপ, আমি একই ব্যক্তি একটি ভাই এবং একটি নাতি পেয়েছিলাম। আমার স্ত্রী এখন আমার নানী, কারণ তিনি আমার মায়ের মা। সুতরাং আমি আমার স্ত্রীর স্বামী এবং একই সাথে আমার স্ত্রীর ধনতন্ত্র। অন্য কথায়, আমি আমার নিজের দাদা।

জিনিসগুলি আরও অদ্ভুত হয়ে ওঠে , যখন আপনি সার্গেটস বা "ফাজি পিতৃত্ব" কে বিবেচনা করেন।

কীভাবে মোকাবেলা করতে হয়

চক্রকে বহির্মুখী হিসাবে সংজ্ঞায়িত করুন

আপনি সিদ্ধান্ত নিতে পারেন যে আপনার সফ্টওয়্যারটি এ জাতীয় বিরল ক্ষেত্রে মোকাবেলা করা উচিত নয়। যদি এরকম কেস দেখা দেয় তবে ব্যবহারকারীর একটি আলাদা পণ্য ব্যবহার করা উচিত। এটি আরও সাধারণ ক্ষেত্রে আরও দৃust়তার সাথে মোকাবেলা করে, কারণ আপনি আরও দৃser়তা এবং একটি সহজ ডেটা মডেল রাখতে পারেন।

এই ক্ষেত্রে, আপনার সফ্টওয়্যারটিতে কিছু ভাল আমদানি এবং রফতানি বৈশিষ্ট্য যুক্ত করুন, যাতে ব্যবহারকারী প্রয়োজনে সহজেই একটি অন্য পণ্যতে স্থানান্তর করতে পারেন।

ম্যানুয়াল সম্পর্কের অনুমতি দিন

আপনি ব্যবহারকারীকে ম্যানুয়াল সম্পর্ক যুক্ত করার অনুমতি দিতে পারেন। এই সম্পর্কগুলি "প্রথম শ্রেণির নাগরিক" নয়, অর্থাৎ সফ্টওয়্যারগুলি সেগুলি যেমন হয় তেমন গ্রহণ করে, তাদের পরীক্ষা করে না এবং মূল ডেটা মডেলটিতে তাদের পরিচালনা করে না।

তারপরে ব্যবহারকারীরা বিরল কেসগুলি হাত দ্বারা পরিচালনা করতে পারেন। আপনার ডেটা মডেলটি এখনও বেশ সহজ থাকবে এবং আপনার দৃser়তাগুলি টিকে থাকবে।

ম্যানুয়াল সম্পর্কের বিষয়ে সাবধানতা অবলম্বন করুন। এগুলিকে সম্পূর্ণরূপে কনফিগারযোগ্য করে তোলা এবং তাই সম্পূর্ণরূপে কনফিগারযোগ্য ডেটা মডেল তৈরি করার লোভ রয়েছে। এটি কাজ করবে না: আপনার সফ্টওয়্যারটি স্কেল করবে না, আপনি অদ্ভুত বাগ পাবেন এবং শেষ পর্যন্ত ব্যবহারকারীর ইন্টারফেসটি অকেজো হয়ে যাবে। এই অ্যান্টি-প্যাটার্নটিকে "সফট কোডিং" বলা হয় এবং "দৈনিক ডাব্লুটিএফ" এর জন্য উদাহরণগুলিতে পূর্ণ।

আপনার ডেটা মডেলটিকে আরও নমনীয় করুন, জোর ছাড়ুন, পরীক্ষার আক্রমণকারী arian

শেষ অবলম্বনটি আপনার ডেটা মডেলটিকে আরও নমনীয় করে তুলবে। আপনাকে প্রায় সমস্ত দাবি ছেড়ে যেতে হবে এবং আপনার ডেটা মডেলটি একটি সম্পূর্ণ ফুটিয়ে তোলা গ্রাফের উপর ভিত্তি করে করতে হবে। উপরের উদাহরণটি দেখায় যে, আপনার নিজের দাদা হওয়া সহজেই সম্ভব, তাই আপনি চক্রও রাখতে পারেন।

এক্ষেত্রে আপনার সফ্টওয়্যারটি আপনার ব্যাপকভাবে পরীক্ষা করা উচিত। আপনাকে প্রায় সমস্ত দাবি বাদ দিতে হয়েছিল, তাই অতিরিক্ত বাগের জন্য খুব ভাল সুযোগ রয়েছে।

অস্বাভাবিক পরীক্ষার কেসগুলি পরীক্ষা করতে একটি পরীক্ষার ডেটা জেনারেটর ব্যবহার করুন। হাস্কেল , এরলং বা সি এর জন্য দ্রুত চেক গ্রন্থাগার রয়েছে । জাভা / Scala জন্য আছে ScalaCheck এবং ন্যায় । একটি পরীক্ষার ধারণাটি একটি এলোমেলো জনসংখ্যার অনুকরণ করা হবে, এলোমেলোভাবে এটিকে প্রজনন করতে দিন, তারপরে আপনার সফ্টওয়্যারটিকে প্রথমে আমদানি করুন এবং তারপরে ফলাফলটি রফতানি করুন। প্রত্যাশাটি হ'ল, আউটপুটে সমস্ত সংযোগগুলি ইনপুট এবং ভাইস শ্লোকেও রয়েছে।

একটি মামলা, যেখানে সম্পত্তি একই থাকে stay তাকে আক্রমণকারী বলা হয়। এই ক্ষেত্রে, আক্রমণকারী হ'ল নকল জনগোষ্ঠীর ব্যক্তিদের মধ্যে "রোমান্টিক সম্পর্কের" সেট। যতটা সম্ভব আক্রমণের সন্ধান করার চেষ্টা করুন এবং এলোমেলোভাবে উত্পন্ন ডেটা দিয়ে তাদের পরীক্ষা করুন। আক্রমণকারীরা কার্যকরী হতে পারে, যেমন:

  • আপনি আরও "রোমান্টিক সম্পর্ক" যুক্ত করলেও একটি চাচা চাচা থাকেন
  • প্রত্যেক সন্তানের বাবা-মা থাকে has
  • দুই প্রজন্মের জনসংখ্যার কমপক্ষে একজন গ্র্যান্ড-প্যারেন্ট থাকে

বা এগুলি প্রযুক্তিগত হতে পারে:

  • আপনার সফ্টওয়্যারটি 10 ​​বিলিয়ন সদস্যের গ্রাফে ক্রাশ হবে না (যতগুলি আন্তঃসংযোগই হোক না কেন)
  • আপনার সফটওয়্যার ও (ও নোডের সংখ্যা) এবং হে (প্রান্তের সংখ্যা (2) এর সাথে স্কেল করে
  • আপনার সফ্টওয়্যারটি 10 ​​বিলিয়ন সদস্যের প্রতিটি পরিবারের গ্রাফ সংরক্ষণ এবং পুনরায় লোড করতে পারে

সিমুলেটেড পরীক্ষা চালিয়ে, আপনি প্রচুর অদ্ভুত কোণার কেস পাবেন। সেগুলি ঠিক করতে অনেক সময় লাগবে। এছাড়াও আপনি প্রচুর অপ্টিমাইজেশন হারাবেন, আপনার সফ্টওয়্যারটি অনেক ধীর গতিতে চলবে। আপনাকে সিদ্ধান্ত নিতে হবে, যদি এটির মূল্য হয় এবং এটি যদি আপনার সফ্টওয়্যারটির আওতায় থাকে।


3

সমস্ত দাবি মুছে ফেলার পরিবর্তে, আপনার তারপরেও কোনও ব্যক্তি তার নিজের পিতা-মাতা বা অন্যান্য অসম্ভব পরিস্থিতি হিসাবে জিনিসগুলি পরীক্ষা করে ত্রুটি উপস্থাপন করতে হবে। সম্ভবত এটি সতর্কতা জারি করুন যদি এটি অসম্ভব হয় তবে ব্যবহারকারী এখনও সাধারণ ইনপুট ত্রুটিগুলি সনাক্ত করতে পারে, তবে সবকিছু ঠিক থাকলে এটি কাজ করবে।

আমি প্রতিটি ব্যক্তির জন্য স্থায়ী পূর্ণসংখ্যার সাথে ভেক্টরে ডেটা সংরক্ষণ করব এবং পিতা-মাতা এবং শিশুদের ব্যক্তিগত বস্তুগুলিতে সংরক্ষণ করব যেখানে বলা হয় যে ভেক্টরের সূচক। প্রজন্মের মধ্যে যেতে এটি বেশ দ্রুত হবে (তবে নাম অনুসন্ধানের মতো জিনিসগুলির জন্য ধীর)। বস্তুগুলি কখন তৈরি হয়েছিল সেগুলি অনুসারে হবে।


-3

পিতাকে নকল করুন (অথবা সিমলিংক / রেফারেন্স ব্যবহার করুন)।

উদাহরণস্বরূপ, আপনি যদি শ্রেণিবদ্ধ ডাটাবেস ব্যবহার করছেন:

$ #each person node has two nodes representing its parents.
$ mkdir Family
$ mkdir Family/Son
$ mkdir Family/Son/Daughter
$ mkdir Family/Son/Father
$ mkdir Family/Son/Daughter/Father
$ ln -s Family/Son/Daughter/Father Family/Son/Father
$ mkdir Family/Son/Daughter/Wife
$ tree Family
Family
└── Son
    ├── Daughter
       ├── Father
       └── Wife
    └── Father -> Family/Son/Daughter/Father

4 directories, 1 file

3
ln -sকমান্ড যে ভাবে কাজ করে না; লিঙ্কটির রেজোলিউশন নীচের থেকে Family/Son/Fatherঅনুসন্ধান করবে , যেখানে লিঙ্কটি বাস করে, যেখানে আপনি কমান্ড জারি করেছিলেন সেখান থেকে নয় । Family/Son/Daughter/FatherFamily/Son.ln -s
মুসিফিল

48
ক্লোনিং
জেনেভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.