ত্রি এবং রেডিক্স ত্রি ডাটা স্ট্রাকচারের মধ্যে পার্থক্য কী?


98

হয় Trie এবং সোর্স Trie ডাটা স্ট্রাকচার একই জিনিস?

যদি সেগুলি একই না হয় তবে র‌্যাডিক্স ট্রাই (একে একে প্যাট্রিসিয়া ট্রাই) এর অর্থ কী?


4
আমি কি কেবলমাত্র এইটাকে ট্যাগ করার radix-treeপরিবর্তে কিছুটা বিরক্তিকর মনে করি radix-trie? এটির সাথে ট্যাগযুক্ত বেশ কয়েকটি প্রশ্ন রয়েছে।
errantlinguist

4
@errantlinguist উইকিপিডিয়া radix trieনিবন্ধ হিসাবে শিরোনাম Radix tree। তদুপরি সাহিত্যে "রেডিক্স ট্রি" শব্দটি বহুল ব্যবহৃত হয়। "উপসর্গ গাছ" বলার চেষ্টা করা যদি আমার কাছে আরও বোঝা যায়। সর্বোপরি, তারা সমস্ত গাছের ডেটা স্ট্রাকচার।
অ্যামিলিও ওয়াজকেজ-রেইনা

এছাড়াও: "রেডিক্স ট্রাই (একে একে প্যাট্রিসিয়া ট্রাই) এর অর্থ কী?" এটি ধরে নিয়েছে যে র‌্যাডিক্স ট্রি এবং প্যাট্রিসিয়া গাছগুলি একই এবং একই জিনিস তবে সেগুলি হয় না (উদাহরণস্বরূপ এই উত্তরটি দেখুন )। প্যাট্রিসিয়া গাছগুলি এমন গাছ যা আপনি পেট্রিসিয়া অ্যালগরিদম চালানোর মাধ্যমে পান (এফওয়াইআই প্যাট্রিসিয়া একটি সংক্ষিপ্ত রূপ, যা "আলফানিউমেরিকায় কোডেড তথ্য পুনরুদ্ধার করার জন্য ব্যবহারিক অ্যালগরিদম") for ফলস্বরূপ গাছগুলি মূল্যের গাছ হিসাবে বোঝা যায় radix = 2, এর অর্থ আপনি একবারে ইনপুট স্ট্রিংয়ের বিটগুলি সন্ধান করে গাছটিকে অতিক্রম করেনlog2(radix)=1
আমেলিও ভাজকেজ-রেইনা

উত্তর:


125

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

এখন, অনুমান আপনি শব্দ আছে hello, hatএবং have। এগুলিকে একটি ট্রাইতে সঞ্চয় করতে , এটি দেখতে দেখতে এমন হবে:

    e - l - l - o
  /
h - a - t
      \
       v - e

এবং আপনার নয়টি নোড দরকার। আমি নোডগুলিতে অক্ষরগুলি রেখেছি, তবে বাস্তবে তারা প্রান্তগুলি লেবেল করেছে।

র‌্যাডিক্স গাছে আপনার থাকতে হবে:

            *
           /
        (ello)
         /
* - h - * -(a) - * - (t) - *
                 \
                 (ve)
                   \
                    *

এবং আপনার কেবল পাঁচটি নোড দরকার। উপরের ছবিতে নোডগুলি হ'ল নক্ষত্রগুলি।

সুতরাং, সামগ্রিকভাবে, একটি রেডিক্স গাছ কম স্মৃতি নেয় তবে এটি কার্যকর করা আরও কঠিন। অন্যথায় উভয়ের ব্যবহারের ক্ষেত্রে প্রায় একই রকম।


ধন্যবাদ ...
ত্রয়ী

আমি বিশ্বাস করি যে আমি যখন প্রথমে ট্রি ব্যবহার করি তখন উইকিপিডিয়া নিবন্ধটি কেবল ব্যবহার করি । আমি এটি নিখুঁত বলছি না তবে এটি যথেষ্ট ভাল।
Ivaylo স্ট্রান্ডজেভ

4
আমি কি বলতে পারি যে ট্রাইতে অনুসন্ধান করা Radix গাছের চেয়ে দ্রুত? কারণ ট্রাইতে আপনি যদি পরবর্তী চরটি অনুসন্ধান করতে চান তবে আপনাকে বর্তমান নোডের চাইল্ড অ্যারেতে ith ইনডেক্সটি দেখতে হবে তবে র‌্যাডিক্স ট্রি এ আপনার ক্রম অনুসারে সমস্ত শিশু নোডের সন্ধান দরকার। বাস্তবায়নের কোড জিও.এল.পি.
চেষ্টা করছেন

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

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

69

আমার প্রশ্ন হ'ল ট্রাই ডেটা স্ট্রাকচার এবং র‌্যাডিক্স ট্রি একই জিনিস কিনা ?

সংক্ষেপে, না। বিভাগ Radix শিক্ষক Trie একটি নির্দিষ্ট বিভাগ বর্ণনা শিক্ষক Trie কিন্তু তার মানে এই নয় যে, সব চেষ্টা র্যাডিক্স চেষ্টা হয়।

যদি সেগুলি একই রকম হয় তবে র্যাডিক্স ট্রাই (ওরফে প্যাট্রিসিয়া ট্রি) এর অর্থ কী?

আমি অনুমান আপনি লিখতে বোঝানো হয় না , অত আমার সংশোধন আপনার প্রশ্নের হবে।

একইভাবে, প্যাট্রিসিয়া একটি নির্দিষ্ট ধরণের রেডিক্স ট্রাই বোঝায়, তবে সমস্ত রেডিক্সের চেষ্টা প্যাট্রিসিয়ার চেষ্টা নয়।


একটি ট্রাই কি?

"ট্রি" একটি সম্মিলিত অ্যারে হিসাবে ব্যবহারের জন্য উপযুক্ত একটি ট্রি ডেটা স্ট্রাকচারের বর্ণনা দেয়, যেখানে শাখা বা প্রান্তগুলি একটি কী এর অংশগুলির সাথে মিলে যায় । অংশগুলির সংজ্ঞা এখানে বরং অস্পষ্ট, কারণ বিভিন্ন বাস্তবায়নের প্রান্তগুলি অনুসারে বিভিন্ন বিট-দৈর্ঘ্য ব্যবহার করে। উদাহরণস্বরূপ, বাইনারি ট্রিতে নোডের প্রতি দুটি প্রান্ত থাকে যা 0 বা 1 এর সাথে সামঞ্জস্য হয়, যখন একটি 16-ত্রি ট্রিতে নোডের প্রতি 16 টি প্রান্ত থাকে যা চার বিটের সাথে মিলিত হয় (বা একটি হেক্সিডেসিমাল ডিজিট: 0x0 থেকে 0xf)।

উইকিপিডিয়া থেকে প্রাপ্ত এই চিত্রটিতে 'এ', 'টু', 'চা', 'টেড', 'দশ' এবং 'সরাই' কী অন্তর্ভুক্ত করা হয়েছে (কমপক্ষে) কীগুলি দিয়ে একটি ট্রাই চিত্রিত করা হয়েছে:

বেসিক ট্রাই

এই ত্রি যদি 't', 'তে', 'আই' বা 'ইন' কীগুলির জন্য আইটেমগুলি সংরক্ষণ করে থাকে তবে প্রকৃত মান সহ নুলারী নোড এবং নোডের মধ্যে পার্থক্য করতে প্রতিটি নোডে অতিরিক্ত তথ্য উপস্থিত থাকতে হবে।


একটি রেডিক্স ট্রাই কি?

"রেডিক্স ট্রাই" ট্রাইয়ের এমন এক রূপকে বর্ণনা করেছে যা সাধারণ উপসর্গকে ঘনীভূত করে, যেমন ইভায়ে স্ট্রান্ডজেভ তার উত্তরে বর্ণনা করেছেন। নীচের স্থির অ্যাসাইনমেন্টগুলি ব্যবহার করে "হাসি", "হাসি", "হাসি" এবং "হাসি" কীগুলিকে সূচকযুক্ত 256-ত্রি ট্রাই বিবেচনা করুন:

root['s']['m']['i']['l']['e']['\0'] = smile_item;
root['s']['m']['i']['l']['e']['d']['\0'] = smiled_item;
root['s']['m']['i']['l']['e']['s']['\0'] = smiles_item;
root['s']['m']['i']['l']['i']['n']['g']['\0'] = smiling_item;

প্রতিটি সাবস্ক্রিপ্ট একটি অভ্যন্তরীণ নোড অ্যাক্সেস করে। এর অর্থ পুনরুদ্ধার করার জন্য smile_item, আপনাকে অবশ্যই সাতটি নোড অ্যাক্সেস করতে হবে। আটটি নোড অ্যাক্সেসের সাথে smiled_itemএবং smiles_item, এবং নয়টি থেকে প্রাসঙ্গিক smiling_item। এই চারটি আইটেমের জন্য মোট চৌদ্দটি নোড রয়েছে। তবে এগুলির সব মিলিয়ে প্রথম চারটি বাইট রয়েছে (প্রথম চারটি নোডের সাথে মিলিয়ে) সাধারণ। যারা চার বাইট ঘনীভূত করার মাধ্যমে একটি তৈরি করতে rootযে অনুরূপ ['s']['m']['i']['l'], চার নোড ব্যবহারের দূরে অপ্টিমাইজ করা হয়েছে। এর অর্থ কম স্মৃতি এবং কম নোড অ্যাক্সেস, যা খুব ভাল ইঙ্গিত। অপ্রয়োজনীয় প্রত্যয় বাইট অ্যাক্সেসের প্রয়োজনীয়তা হ্রাস করতে অপ্টিমাইজেশন পুনরাবৃত্তভাবে প্রয়োগ করা যেতে পারে। অবশেষে, আপনি একটি বিন্দুতে পৌঁছেছেন যেখানে আপনি কেবল অনুসন্ধান কী এবং ত্রি অনুসারে সূচিত স্থানগুলিতে সূচিবদ্ধ কীগুলির মধ্যে পার্থক্য তুলনা করছেন। এটি একটি মূলা ত্রি।

root = smil_dummy;
root['e'] = smile_item;
root['e']['d'] = smiled_item;
root['e']['s'] = smiles_item;
root['i'] = smiling_item;

আইটেমগুলি পুনরুদ্ধার করতে, প্রতিটি নোডের একটি অবস্থান প্রয়োজন। "হাসি" এর অনুসন্ধান কী এবং root.position4 এর একটি সহ আমরা অ্যাক্সেস করি root["smiles"[4]]যা হ'ল root['e']। আমরা একে একটি পরিবর্তনশীল হিসাবে সঞ্চয় করি currentcurrent.position5, যা এর মধ্যে পার্থক্যের অবস্থান "smiled"এবং "smiles"তাই পরবর্তী অ্যাক্সেস হবে root["smiles"[5]]। এটি আমাদের এনেছে smiles_item, এবং আমাদের স্ট্রিংয়ের সমাপ্তি। আমাদের অনুসন্ধান বন্ধ হয়ে গেছে এবং আটটির পরিবর্তে মাত্র তিনটি নোড অ্যাক্সেস সহ আইটেমটি পুনরুদ্ধার করা হয়েছে।


প্যাট্রিসিয়া ট্রাই কি?

একটি প্যাট্রিসিয়া ট্রাই মূল্যের চেষ্টাগুলির একটি বৈকল্পিক যার জন্য কেবল আইটেমগুলি nধারণ করার জন্য নোড থাকা উচিত n। আমাদের crudely প্রদর্শিত র্যাডিক্স Trie উপরে pseudocode মধ্যে সেখানে মোট পাঁচটি নোড আছেন: root(যা একটি nullary নোড হয়; এটা কোন প্রকৃত মূল্য রয়েছে), root['e'], root['e']['d'], root['e']['s']এবং root['i']। পেট্রিশিয়া ট্রাইতে কেবল চারটি হওয়া উচিত। আসুন একনজরে একবার দেখে নেওয়া যাক যে এই উপসর্গগুলি বাইনারিতে দেখে তাদের কীভাবে পৃথক হতে পারে, যেহেতু প্যাট্রিসিয়া একটি বাইনারি অ্যালগরিদম।

smile:   0111 0011  0110 1101  0110 1001  0110 1100  0110 0101  0000 0000  0000 0000
smiled:  0111 0011  0110 1101  0110 1001  0110 1100  0110 0101  0110 0100  0000 0000
smiles:  0111 0011  0110 1101  0110 1001  0110 1100  0110 0101  0111 0011  0000 0000
smiling: 0111 0011  0110 1101  0110 1001  0110 1100  0110 1001  0110 1110  0110 0111 ...

আসুন আমরা বিবেচনা করি যে নোডগুলি উপরে উপস্থাপন করা হয় তার ক্রমে যুক্ত করা হয়েছে। smile_itemএই গাছের মূল। পার্থক্যটি, এটি স্পটকে সামান্য সহজ করার জন্য সাহসী "smile", বিট ৩ 36 বিটের শেষ বাইটে this এই বিন্দু অবধি, আমাদের সমস্ত নোডের একই উপসর্গ রয়েছে। smiled_nodeএ জন্যে smile_node[0]। এর মধ্যে পার্থক্য হয় "smiled"এবং "smiles"বিট 43 এ ঘটে, যেখানে "smiles"একটি '1' বিট smiled_node[1]রয়েছে smiles_node

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

সরল পেট্রিশিয়া ডায়াগ্রাম

বৈচিত্র্য দৈর্ঘ্যের কীগুলি যুক্ত আরও জটিল প্যাট্রিসিয়া অ্যালগোরিদম সম্ভব, যদিও প্যাট্রিসিয়ার কিছু প্রযুক্তিগত বৈশিষ্ট্য প্রক্রিয়াটিতে হারিয়ে গেছে (যথা কোনও নোডের আগে নোডের সাথে একটি সাধারণ উপসর্গ থাকে):

জটিল পেট্রিসিয়া ডায়াগ্রাম

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

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


আপনি কি আমাকে "রেডিক্স" শব্দটির তাত্পর্য বুঝতে সাহায্য করবেন! আমি বুঝতে পারি, কীভাবে প্রাকৃতিক উপায়ে, আমরা একাধিক চিহ্ন / প্রান্তের একত্রিত করে এক প্রান্তে কোনও সংকেতকে ট্রাইয়ে পরিণত করার চেষ্টা করতে পারি। যাইহোক, কেন আমি একটি অ-কমপ্যাক্টড ট্রাই (কেবলমাত্র একটি ট্রাই) কে রেডিক্স ট্রাই হিসাবে অভিহিত করা যায় না তা বুঝতে সক্ষম হয়ে উঠতে পারছি না।
কেঘাটক

@ সেব - র‌্যাডিক্স ট্রি-তে পোস্ট stackoverflow.com/questions/40087385/… পোস্টে আপনার প্রতিক্রিয়াটির সত্যই প্রশংসা করব । অ্যাড।
কেঘাটক

@ বাকচেরি আমি সক্ষম হতে পছন্দ করতাম তবে অনুগ্রহ করে বুঝতে পারি যে আমার কম্পিউটারটি চুরি হয়ে গেছে আমি চেষ্টাটি পর্যাপ্ত প্রতিক্রিয়াতে রাখতে পারব না।
অটিস্টিক

18

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

         [root]
     ...// | \\...
           |  \
           c   d
           |    \
          [*]    [*]
      ...//|\.  ./|\\...        Fig-I
        a       a
       /       /
     [*]      [*]
 ...//|\..  ../|\\...
    /        /   \
   B        b     d
  /        /       \
 []       []       []

(cab)   (dab)     (dad)

এটি মূলত অভ্যন্তরীণ নোড সহ একটি এম-আরি গাছ যা [*] এবং লিফ নোড হিসাবে প্রতিনিধিত্ব করে [] হিসাবে উপস্থাপিত। এই কাঠামোটিকে ট্রাই বলা হয় । প্রতিটি নোডে শাখা প্রশাখার বর্ণমালার অনন্য প্রতীক সংখ্যার সমান রাখা যেতে পারে, R কে বলুন ছোট হাতের অক্ষরের জন্য ইংরেজি বর্ণমালা, আর = 26; বর্ধিত এএসসিআইআই বর্ণমালার জন্য, আর = 256 এবং বাইনারি সংখ্যা / স্ট্রিং আর = 2 এর জন্য।

কম্প্যাক্ট trie:
সাধারণত, একটি একটি নোড Trie সঙ্গে আকার = আর একটি অ্যারের ব্যবহার করে এবং এইভাবে মেমরি বর্জ্য ঘটায় যখন প্রতিটি নোডের কম প্রান্ত হয়েছে। স্মৃতির উদ্বেগকে দূরে রাখতে বিভিন্ন প্রস্তাব দেওয়া হয়েছিল। এই পরিবর্তনের উপর ভিত্তি করে ট্রাইকে " কমপ্যাক্ট ট্রাই " এবং " সংক্ষেপিত ট্রাই " নামকরণ করা হয় । একটি সামঞ্জস্যপূর্ণ নামকরণ বিরল হলেও, নোডের একক প্রান্ত থাকে তখন সমস্ত প্রান্তকে গ্রুপ করে একটি কমপ্যাক্ট ট্রাইয়ের সর্বাধিক সাধারণ সংস্করণ তৈরি হয়। এই ধারণাটি ব্যবহার করে উপরের (চিত্র -1) "বাবা", "ড্যাব", এবং "ক্যাব" কীগুলির সাহায্যে ট্রাই নীচে রূপ নিতে পারে।

         [root]
     ...// | \\...
           |  \
          cab  da
           |    \
          [ ]   [*]                Fig-II
               ./|\\...
                 |  \
                 b   d
                 |    \
                []    []

মনে রাখবেন যে 'গ', 'এ' এবং 'বি' এর প্রত্যেকটিই এর সংশ্লিষ্ট প্যারেন্ট নোডের একমাত্র প্রান্ত এবং সুতরাং, এগুলি একক প্রান্তে "ক্যাব" তে একত্রিত হয়। একইভাবে, 'd' এবং a 'একক প্রান্তে একত্রীকরণ করা হয়েছে যা "দা" হিসাবে চিহ্নিত করা হয়।

রেডিক্স ট্রি: গণিতের রেডিক্স
শব্দটি অর্থ একটি সংখ্যার সিস্টেমের ভিত্তি এবং এটি মূলত সেই ব্যবস্থায় যে কোনও সংখ্যার প্রতিনিধিত্ব করার জন্য প্রয়োজনীয় অনন্য চিহ্নগুলির সংখ্যা নির্দেশ করে। উদাহরণস্বরূপ, দশমিক সিস্টেম হ'ল রেডিক্স দশ, এবং বাইনারি সিস্টেমটি মূলত দুটি হয়। অনুরূপ ধারণাটি ব্যবহার করে, আমরা যখন অন্তর্নিহিত প্রতিনিধিত্বমূলক সিস্টেমের অনন্য প্রতীক সংখ্যা দ্বারা কোনও ডেটা কাঠামো বা একটি অ্যালগরিদমকে চিহ্নিত করতে আগ্রহী তখন আমরা ধারণাটিকে "রেডিক্স" দিয়ে ট্যাগ করি। উদাহরণস্বরূপ, নির্দিষ্ট বাছাইকরণ অ্যালগরিদমের জন্য "রেডিক্স সাজান"। যুক্তির একই লাইনে, সব রুপভেদ Trieযার বৈশিষ্ট্যগুলি (যেমন গভীরতা, স্মৃতিশক্তি প্রয়োজন, অনুসন্ধান মিস / হিট রানটাইম ইত্যাদি) অন্তর্নিহিত বর্ণমালার র‌্যাডিক্সের উপর নির্ভর করে, আমরা তাদেরকে রেডিক্সকে "ট্রাই'স বলতে পারি। উদাহরণস্বরূপ, একটি আন-কমপ্যাক্টেড পাশাপাশি একটি কমপ্যাক্ট ত্রিও যখন বর্ণমালা অ্যাজ ব্যবহার করে, আমরা এটিকে একটি 26 রেডিক্স ট্রাই বলতে পারি । যে কোনও ট্রাই যা কেবল দুটি প্রতীক (traditionতিহ্যগতভাবে '0' এবং '1') ব্যবহার করে তাকে রেডিক্স 2 ট্রাই বলা যেতে পারে । তবে, কোনওভাবে অনেক সাহিত্যে কেবল "কমপ্যাক্টড ট্রাই" শব্দটির জন্য "রেডিক্স ট্রি " শব্দটি ব্যবহারকে সীমাবদ্ধ করেছিলেন ।

প্যাট্রিসিয়া গাছ / ট্রিটির উপস্থাপন করুন:
এটি লক্ষ্য করা আকর্ষণীয় হবে যে কী হিসাবে স্ট্রিংগুলি বাইনারি-বর্ণমালা ব্যবহার করে প্রতিনিধিত্ব করা যায়। আমরা হওয়া ASCII এনকোডিং অনুমান, তাহলে একটি কী "বাবা" ক্রমানুসারে প্রতিটি অক্ষর বাইনারি উপস্থাপনা লিখে বাইনারি ফর্মে লেখা যেতে পারে, যেমন "বলে 01100100 01100001 01100100 " 'ঘ' এর বাইনারি ফর্মে লিখে, 'একটি', এবং ধারাবাহিকভাবে 'ডি'। এই ধারণাটি ব্যবহার করে একটি ত্রি (রডিক্স টু সহ) গঠন করা যেতে পারে। নীচে আমরা একটি সহজ ধারণা অনুধাবন করে এই ধারণাটি চিত্রিত করেছি যে 'এ', 'বি', 'সি' এবং 'ডি' অক্ষরগুলি ASCII এর পরিবর্তে একটি ছোট বর্ণমালা থেকে এসেছে।

চিত্র-তৃতীয়টির জন্য দ্রষ্টব্য: চিত্রটি সহজ করার জন্য, উল্লিখিত হিসাবে, কেবলমাত্র একটি বর্ণমালা ধরে নেওয়া যাক- a, b, c, d} এবং এর সাথে সম্পর্কিত বাইনারি উপস্থাপনাগুলি হ'ল "00", "01", "10" এবং যথাক্রমে “১১”। এটির সাহায্যে আমাদের স্ট্রিং কীগুলি "বাবা", "ড্যাব", এবং "ক্যাব" যথাক্রমে "110011", "110001" এবং "100001" হয়ে যায়। এর জন্য ট্রাইগুলি চিত্র -৩-এর নীচে যেমন দেখানো হবে (বিটগুলি বাম থেকে ডানে যেমন পংক্তিগুলি বাম থেকে ডানে পড়া হয় তেমনভাবে পড়তে হবে)।

          [root]
             \1               
              \
              [*]
             0/ \1               
             /   \
           [*]   [*]         
           0/     /               
           /     /0
         [*]    [*]      
        0/      /               
        /      /0
      [*]    [*]
     0/     0/ \1                Fig-III
     /      /   \
    [*]   [*]   [*]
     \1     \1    \1
      \      \     \
      []     []    []
    (cab)   (dab) (dad)

প্যাট্রিসিয়া ট্রি / ট্রি:
যদি আমরা উপরের বাইনারি ট্রাই (চিত্র-তৃতীয়) একক প্রান্তের সংযোগ ব্যবহার করে কমপ্যাক্ট করি তবে এটি উপরে দেখানো থেকে অনেক কম নোড থাকতে পারে এবং নোডগুলি এখনও 3 এর চেয়ে বেশি হবে, এতে কীগুলির সংখ্যা রয়েছে । ডোনাল্ড আর। মরিসন (1968 সালে) কেবল এন নোড ব্যবহার করে এন কীগুলি চিত্রিত করার জন্য বাইনারি ট্রাই ব্যবহার করার একটি অভিনব উপায় আবিষ্কার করেছিলেন এবং তিনি এই তথ্য কাঠামোর নাম রেখেছিলেন প্যাট্রিসিয়া। তার ত্রি কাঠামোটি মূলত একক প্রান্তগুলি (একমুখী শাখা) থেকে মুক্তি পেয়েছে; এবং এটি করতে গিয়ে তিনি দুটি ধরণের নোড - অভ্যন্তরীণ নোডগুলি (যা কোনও কী চিত্রিত করে না) এবং পাতাগুলি (যে কীগুলি চিত্রিত করে) এর ধারণা থেকেও মুক্তি পেয়েছিল। উপরে বর্ণিত কমপ্যাকশন যুক্তির বিপরীতে, তার ট্রাই আলাদা ধারণা ব্যবহার করে যেখানে প্রতিটি নোডে একটি শাখার সিদ্ধান্ত নেওয়ার জন্য কীটির কতগুলি বিট বাদ দেওয়া উচিত তার ইঙ্গিত রয়েছে includes তবুও তার প্যাট্রিসিয়া ট্রাইয়ের আরেকটি বৈশিষ্ট্য হ'ল এটি কীগুলি সংরক্ষণ করে না - যার অর্থ এই জাতীয় ডেটা স্ট্রাকচার যেমন প্রশ্নের উত্তর দেওয়ার জন্য উপযুক্ত হবে না, প্রদত্ত উপসর্গের সাথে মিলে এমন সমস্ত কীগুলি তালিকাভুক্ত করে , তবে কোনও কী উপস্থিত থাকলে বা এটি অনুসন্ধান করার জন্য ভাল ত্রিতে নয়। তবুও, প্যাট্রিসিয়া ট্রি বা প্যাট্রিসিয়া ট্রি শব্দটি তখন থেকেই অনেকগুলি ভিন্ন তবে একই রকম ইন্দ্রিয়তে ব্যবহৃত হয়েছে, যেমন, একটি কমপ্যাক্ট ট্রাই [এনআইএসটি] নির্দেশ করতে, বা দুটি রেডিক্সের সাথে একটি রেডিক্স ট্রাই সূচিত করার জন্য [একটি সূক্ষ্ম সূচিত হিসাবে WIKI তে পথ] এবং আরও কিছু on

ট্রি যা কোনও রেডিক্স ট্রি নাও হতে পারে:
টেরনারি সার্চ ট্রি (ওরফে টার্নারি সার্চ ট্রি) প্রায়শই সংক্ষেপিত হয় টিএসটি একটি ডেটা স্ট্রাকচার ( জে বেন্টলে এবং আর সেডজউইক দ্বারা প্রস্তাবিত ) যা ত্রি-উপায়ে শাখাগুলির সাথে একটি ট্রির সাথে খুব মিল খুঁজে পাওয়া যায়। এই জাতীয় গাছের জন্য প্রতিটি নোডের একটি বৈশিষ্ট্যযুক্ত বর্ণমালা 'x' থাকে যাতে শাখাগুলি সিদ্ধান্ত দ্বারা চালিত হয় যে কোনও কী এর অক্ষর 'x' এর চেয়ে কম বা সমান বা বড় কিনা। এই স্থির ত্রি-উপায় শাখা বৈশিষ্ট্যের কারণে, এটি ট্রির জন্য একটি মেমরি-দক্ষ বিকল্প সরবরাহ করে, বিশেষত যখন আর (রেডিক্স) ইউনিকোড বর্ণমালাগুলির মতো খুব বড় হয়। মজার বিষয় হচ্ছে, টিএসটি, (আর-ওয়ে) ট্রাইয়ের বিপরীতে , এর বৈশিষ্ট্যগুলি আর দ্বারা প্রভাবিত করে না For উদাহরণস্বরূপ, টিএসটি-র জন্য অনুসন্ধান মিস হল ln (N)আর-ওয়ে ট্রির জন্য বিরোধী লগ আর (এন) হিসাবে । TST এর মেমরি প্রয়োজনীয়তা অসদৃশ আর-পথ Trie হয় না পাশাপাশি আর একটি ফাংশন। সুতরাং আমাদের টিএসটিকে একটি রেডিক্স-ট্রাই বলা সতর্ক হওয়া উচিত। আমি ব্যক্তিগতভাবে মনে করি না যে আমাদের এটিকে মূলত-ত্রি বলা উচিত, কারণ এর বৈশিষ্ট্যগুলির কোনওটিই এর অন্তর্নিহিত বর্ণমালার রেডিক্স, আর দ্বারা প্রভাবিত হয় না its


4
যে কেউ মরিসন অনুসারে প্যাট্রিসিয়া প্রয়োগ করেছেন, সেডজিক এবং নুথ আমি আপনাকে এখানে বর্ণিত অ্যালগরিদম বলতে পারি (যা আমি আমার উত্তরে বর্ণনা করার চেষ্টাও করেছি) এখনও প্রদত্ত মেলে এমন কীগুলির তালিকার মতো প্রশ্নের উত্তর দেওয়ার জন্য খুব উপযুক্ত উপসর্গ । পিএস দুর্দান্ত বলে অন্য কাউকে দেখতে পেয়ে পুনরায়: সে অন্য প্রশ্ন :) আমি তার ব্যাখ্যাটি পছন্দ করি।
অটিস্টিক

পুনরায় "এই জাতীয় প্রশ্নের উত্তর দেওয়ার জন্য উপযুক্ত হবে না, প্রদত্ত উপসর্গের সাথে মেলে এমন সমস্ত কীগুলির তালিকা দাও", গুরুত্ব সহকারে?
পেসারিয়ার

পছন্দ করুন ক্লাসিক PATRICIA একটি পূর্ণসংখ্যা সঞ্চয় করে, যা আপনি কোনও অ্যারের সূচক হিসাবে ব্যবহার করতে পারেন। অ্যারেতে আপনি স্ট্রিংটি রেখেছিলেন। ট্রাইতে আপনি স্ট্রিংয়ের জন্য 0-ভিত্তিক অ্যারে সূচকটি রেখেছিলেন। অনুসন্ধানের সাথে তুলনা করুন এবং বিট এক্সট্রাকশন ফাংশনগুলি পূর্ণসংখ্যার চেয়ে পূর্ণসংখ্যার সাথে সম্পর্কিত স্ট্রিংয়ের উপর পরিচালিত করুন এবং যদি আপনার সন্নিবেশ ফাংশনটি অন্যের উপর ভিত্তি করে থাকে (যেমন এটি হওয়া উচিত, যেহেতু সেখানে প্রচুর পুনরাবৃত্তি যুক্তি রয়েছে) এবং আপনি ' আপনার পথে ভাল থাকবেন আপনি uintptr_tআপনার পূর্ণসংখ্যা হিসাবেও ব্যবহার করতে পারেন , যেহেতু এই ধরণের উপস্থিতি সাধারণত প্রত্যাশিত (যদিও প্রয়োজন হয় না) বলে মনে হয়।
অটিস্টিক

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

@ ডাব্লুডাব্লু - আপনি ঠিক থাকতে পারেন, কারণ আমি এটি লিখতে গিয়ে আমি যে সংস্থানগুলি উল্লেখ করেছি তা সত্যই মনে নেই। একটি দ্রুত গুগলিং আমাকে mathcs.emory.edu/~cheung/Courses/323/Syllabus/Text/trie02.html বা টিউটোরিয়ালসডিয়ারি. com / radix-trie-patricia-trie-or- সংকীর্ণ- ট্রি এর মতো লিঙ্কগুলি পেয়েছে যা মূলত নির্দেশ করে বা (সম্ভবত) উইকি থেকে প্রাপ্ত / প্রভাবিত। আমি যদি অন্য কোনও নির্ভরযোগ্য / পণ্ডিতী উত্স খুঁজে পাই তবে আমি এখানে পোস্ট করব।
কেঘাটক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.