গাছের সেটগুলির জন্য একটি ডেটা স্ট্রাকচার।


10

উপাদানগুলির তালিকাগুলির দক্ষ সঞ্চয় করার জন্য চেষ্টা করে। উপসর্গগুলি ভাগ করা তাই এটি স্থান দক্ষ efficient

আমি দক্ষতার সাথে গাছ সংরক্ষণের জন্য একই ধরণের সন্ধান করছি। আমি সদস্যতা যাচাই করতে এবং উপাদান যুক্ত করতে সক্ষম হতে চাই, জেনেছি যে প্রদত্ত গাছটি কিছু সঞ্চিত গাছের একটি সাবট্রি কিনা বা সেখানে যদি একটি সংরক্ষিত গাছ উপস্থিত থাকে তবে প্রদত্ত গাছের একটি সাবট্রি থাকে also

আমি সাধারণত প্রায় 50 টিরও কম উচ্চতার ভারসাম্যহীন বাইনারি গাছগুলি সঞ্চয় করতে পারি।

সম্পাদনা

আমার অ্যাপ্লিকেশনটি কোনও প্রকারের মেমোয়েজেশন ব্যবহার করে এক ধরণের মডেল চেকার। কল্পনা করুন আমি একটি রাষ্ট্র আছে এবং নিম্নলিখিত সূত্র: এবং সঙ্গে একটি জটিল subformula হচ্ছে, এবং কল্পনা আমি প্রথম জানতে যদি চান ঝুলিতে । আমি চেক করি যে হোল্ড করে এবং দীর্ঘ প্রক্রিয়ার পরে আমি বুঝতে পারি যে এটিই কেস। এখন, আমি জানতে চাই যদি চান ঝুলিতে । আমি আসলে মনে রাখা উচিত যে চাই ঝুলিতে এবং বিজ্ঞপ্তি যে যাতে আমি লাভ করতে পারি মধ্যে প্রায় অবিলম্বে।f = ϕ g = ( ϕ ψ ) ϕ f s ϕ g s f g f g s g t f tগুলি=φ=(φψ)φগুলিφগুলিগুলি
বিপরীতে, আমি যদি প্রমাণ করে দিয়েছি যে ধারণ করে না , তবে আমি বলতে চাই যে প্রায় তাত্ক্ষণিকভাবে ধরে না ।টিটি

আমরা সূত্রগুলিতে আংশিক ক্রম তৈরি করতে পারি, এবং iff । জন্য প্রতিটি রাজ্যে , আমরা সূত্র দুটি সেট সংরক্ষণ; সর্বাধিক সূত্রগুলি সংরক্ষণ করে এবং ন্যূনতম সূত্রগুলি সংরক্ষণ করে না যা সংরক্ষণ করে। এখন দেওয়া একটি রাষ্ট্র এবং একটি সূত্র , আমি দেখতে পারেন যদি , অথবা যদি যা কেস I am কাজ করেছেন এবং আমি জানি সরাসরি কিনা ঝুলিতে ।গুলিএল(গুলি)(গুলি)গুলিএল(গুলি),(গুলি),গুলি

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

@ রাফেল এবং @ জ্যাক ইঙ্গিত করার সাথে সাথে আমি গাছগুলিকে অনুক্রমিক করে তুলতে পারি, তবে আমি আশঙ্কা করি যে এটি সমস্যার সমাধান করবে না কারণ আমি যে আংশিক আদেশে আগ্রহী সেগুলি "এর একটি উপসর্গ" এর সাথে মিল রাখে না।


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

2
যদি আপনি কেবল নীচের সম্পত্তি সহ গাছগুলির ক্রমিকায়িত ব্যবহার করেন : একটি সাবট্রি হয় যদি এবং কেবল যদি এর একটি স্ট্রিং থাকে ? এই জাতীয় করা সোজা [[যদি আপনি প্রথমে আপনার গাছগুলির একটি প্রাকৃতিক রূপ খুঁজে পান]। এর পরে, আপনার প্রশ্নটি স্ট্রিং ম্যাচিংয়ের সমতুল্য, যা স্ট্রোলজিতে একটি বহুল-সমীক্ষা সমস্যা। এসTTS(T)S(T)এস
Jukka Suomela

1
টার্ম ইনডেক্সিং একবার দেখুন ।
স্টার ব্লু

1
আর একটি তাত্ক্ষণিক ধারণাটি হ'ল সমস্ত গাছ টি 1, টি 2, .. একটি বড় গাছ টিতে সংরক্ষণ করা, প্রতিটি প্রান্তের জন্য মনে রাখা গাছের সেটটি এর অংশ। তারপরে, f টি সংরক্ষিত গাছগুলির একটির একটি সাবট্রি কিনা তা নির্ধারণ করতে আপনি প্রথমে নির্ধারণ করেন যে f টি টিতে একটি সাবট্রি কিনা এবং যদি হ্যাঁ, তবে সেই সাবট্রির সমস্ত প্রান্ত-লেবেল সেট ছেদ করুন। উত্তর হ্যাঁ যদি চৌরাস্তাটি খালি নয়। (আপনি দুটি পদক্ষেপও একত্রিত করতে পারেন)।
মার্টিন বি।

উত্তর:


5

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

(ভয় পাবেন না যে লিঙ্কযুক্ত কাগজটি "জৈবিক নেটওয়ার্কগুলিতে নেটওয়ার্ক মোটিফস" সম্পর্কে: জি-ট্রাই গ্রাফগুলির জন্য পুরোপুরি ভাল বিমূর্ত তথ্য কাঠামো is)


4

এর একটি বিশেষ রূপ অধ্যবসায় : ড্রিসকল, সার্নাক, স্লেটার, এবং টারজান দ্বারা নিয়মিত ডেটা স্ট্রাকচারগুলি তৈরি করা কাগজপত্র দেখুন এবং সার্নাক ও টার্জন দ্বারা স্থির অনুসন্ধানের গাছগুলি ব্যবহার করে প্ল্যানার পয়েন্টের অবস্থান, যা সম্পর্কিত গাছের পরিবারগুলিকে সঞ্চয় করে।


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

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

1

এটি কিছুটা বনের মতো শোনাচ্ছে ( বিরত-সেট বন ) ...

এটা একটা কৌশল বলা মাধ্যমে সন্নিবেশ খরচ amortizes র্যাঙ্ক দ্বারা ইউনিয়ন এবং সার্চ অপারেশন ব্যবহার পাথ কম্প্রেশন । আমি সেখানে একটি জানি ক্রমাগত এই কাঠামো সিলভাঁ Conchon এবং জিন-খ্রিস্টফি Filliâtre দ্বারা উন্নত সংস্করণ কিন্তু আমি যদি এই যা জ্যাক উল্লেখ হিসাবে একই কোন ধারণা আছে ...



0

"খাঁটি ফাংশনাল ডেটা স্ট্রাকচারস" (1998) এ, ক্রিস ওকাসাকী টাইপ সমষ্টি (10.3.2) ব্যবহার করে বাইনারি গাছের চেষ্টা করার প্রস্তাব করেছিলেন।

আমি জানি না যে এটি অবিলম্বে সহায়তা করে; সেখানে প্রদত্ত সমাধান সরাসরি প্রয়োগযোগ্য হবে না।


0

প্রোগ্রামার লিংগোতে: আপনি যদি সাধারণ উপ-এক্সপ্রেশন / গাছ / ডিএজি থেকে গাছগুলি তৈরি করেন তবে আপনার কাছে একটি সুন্দর কমপ্যাক্ট মডেল থাকবে। তাই নির্দেশিত অ্যাসাইক্লিক গ্রাফ। তারপরে গাছের একটি সেট যথেষ্ট ছিল।

পাবলিক ক্লাস ট্রি {স্ট্রিং অপারেশন; গাছ [] সাবট্রিজ;

public int compareTo(Tree rhs) {
    if (rhs == null) return false;
    int cmp = operation.compareTo(rhs.operation);
    if (cmp == 0) {
        cmp = Arrays.compareTo(subtrees, rhs.subtrees);
    }
    return cmp;
}

...

ম্যাপ কমনসুবএক্সপ্রেসনস = নতুন হ্যাশম্যাপ ();

গাছ পাওয়া (স্ট্রিং এক্সপ্রেশনস সিনট্যাক্স) ree ট্রি টি = নতুন ট্রি (); t.operation = ...; t.subtrees = ... subexpressions পেতে পুনরাবৃত্ত কল; গাছ টি 2 = সাধারণসুব এক্সপ্রেসনস। টেট (টি); যদি (t2 == নাল) {t2 = t; সাধারণসুব এক্সপ্রেসন.পুট (টি 2, টি 2); } রিটার্ন টি 2; }}

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