হ্যাঁ, আপনি এই সংক্ষেপণটি time সময়ে সম্পাদন করতে পারেন তবে এটি সহজ নয় :) আমরা প্রথমে কিছু পর্যবেক্ষণ করি এবং তারপরে অ্যালগরিদম উপস্থাপন করি। আমরা ধরে নিই যে গাছটি প্রাথমিকভাবে সংকুচিত নয় - এটি সত্যই প্রয়োজন হয় না তবে বিশ্লেষণকে সহজ করে তোলে।O(nlogn)
প্রথমত, আমরা 'কাঠামোগত সাম্য' আবেশমূলকভাবে চিহ্নিত করি। যাক এবং দুটি (সাব) গাছ হবে। যদি এবং উভয় নাল গাছ হয় (কোনও বিন্দু বিন্দু না থাকে), তারা কাঠামোগত সমতুল্য। যদি এবং উভয়ই নাল গাছ না হয় তবে তারা কাঠামোগতভাবে সমতুল্য হয় যদি তাদের বাম বাচ্চারা কাঠামোগত সমতুল্য হয় এবং ডান সন্তানেরা কাঠামোগত সমতুল্য হয়। এই সংজ্ঞাগুলির তুলনায় 'স্ট্রাকচারাল ইকুয়্যালেন্স' হ'ল ন্যূনতম নির্দিষ্ট পয়েন্ট।টিটি'টিটি'টিটি'
উদাহরণস্বরূপ, যে কোনও দুটি পাতার নোড কাঠামোগত সমতুল্য, কারণ উভয়ই তাদের উভয় সন্তানের মতো নাল গাছ রয়েছে যা কাঠামোগত সমতুল্য।
এটি যেমন বিরক্তিকর বলে 'তাদের বাম শিশুরা কাঠামোগত সমতুল্য এবং ঠিক তেমনি তাদের ডান সন্তানও', আমরা প্রায়শই বলব 'তাদের বাচ্চারা কাঠামোগত সমতুল্য' এবং একই উদ্দেশ্য পোষণ করবে। এছাড়াও নোট করুন আমরা কখনও কখনও 'এই শীর্ষটি' বলি যখন আমরা 'এই শীর্ষবিন্দুতে অন্তর্ভুক্ত সাবট্রি' বোঝি।
যদি আমরা সর্বাধিক গভীরতা সঙ্গে সব সাব-ট্রি এর কাঠামোগত সমানতা জানেন: উপরোক্ত সংজ্ঞা অবিলম্বে আমাদের একটি ইঙ্গিতটি কিভাবে কম্প্রেশন সম্পাদন করতে দেয় , তাহলে আমরা সহজেই গভীরতার সাথে সাব-ট্রি এর কাঠামোগত সমানতা গনা করতে । চলমান সময় এড়াতে আমাদের স্মার্ট পদ্ধতিতে এই গণনাটি করতে হবে ।ঘঘ+ 1ও ( এন)2)
অ্যালগোরিদম এর কার্যকর করার সময় প্রতিটি ভার্টেক্সে শনাক্তকারীকে অর্পণ করবে। একটি আইডেন্টিফায়ার সেটে একটি সংখ্যা । শনাক্তকারীগুলি অনন্য এবং কখনই পরিবর্তন হয় না: সুতরাং আমরা ধরেই নিয়েছি আমরা অ্যালগরিদমের শুরুতে কিছু (বৈশ্বিক) ভেরিয়েবল 1 তে নির্ধারণ করেছিলাম এবং প্রতিবার আমরা কোনও ভার্টেক্সের জন্য একটি শনাক্তকারীকে নির্ধারিত করি, আমরা সেই পরিবর্তনকের বর্তমান মানটি শীর্ষবিন্দু এবং বর্ধনের জন্য নির্ধারণ করি we সেই ভেরিয়েবলের মান।{ 1 , 2 , 3 , ... , এন }
আমরা প্রথমে ইনপুট ট্রিকে (সর্বাধিক ) তালিকায় রূপান্তর করি যার সমান গভীরতার শীর্ষকোষ রয়েছে এবং তাদের পিতামাতার সাথে একটি পয়েন্টার রেখে। এটি সময়ে সহজেই সম্পন্ন হয় ।এনও ( এন )
আমরা প্রথমে সমস্ত পাতাগুলি সংকোচন করি (আমরা এই পাতাগুলি গভীরতার সাথে 0 এর সূচি সহ তালিকায় খুঁজে পেতে পারি) একটি একক প্রান্তে। আমরা এই প্রান্তটিকে একটি সনাক্তকারী নির্ধারণ করি। দুটি উল্লম্বের সংকোচনের পরিবর্তে উভয় প্রান্তের পিতামাতাকে অন্য ভার্টেক্সের দিকে নির্দেশিত করে পুনর্নির্দেশের মাধ্যমে করা হয়।
আমরা দুই পর্যবেক্ষণ করুন: প্রথমত, কোনো প্রান্তবিন্দু কঠোরভাবে ছোট গভীরতা সন্তান আছে, এবং দ্বিতীয়ত, আমরা যদি গভীরতা চেয়ে ছোট সব ছেদচিহ্ন উপর কম্প্রেশন সম্পাদিত হয়েছে (এবং তাদের শনাক্তকারী দিয়েছি), তারপর গভীরতা দু'রকমের গঠনের দিক সমতুল্য এবং যদি তাদের বাচ্চাদের সনাক্তকারী মিলে যায় তবে সংকুচিত হতে পারে। এই শেষ পর্যবেক্ষণটি নিম্নলিখিত যুক্তি থেকে অনুসরণ করা হয়েছে: দুটি ছেদগুলি কাঠামোগতভাবে সমতুল্য হয় যদি তাদের বাচ্চারা কাঠামোগতভাবে সমতুল্য হয়, এবং সংক্ষেপণের পরে এর অর্থ তাদের পয়েন্টারগুলি একই বাচ্চাদের দিকে ইশারা করে, যার পরিবর্তে তাদের বাচ্চাদের সনাক্তকারী সমান হয়।ঘঘ
আমরা ছোট তালিকা থেকে বড় গভীরতার সমান গভীরতার নোড সহ সমস্ত তালিকাগুলির মধ্যে পুনরাবৃত্তি করি। প্রতিটি স্তরের জন্য আমরা সংখ্যার জোড়গুলির একটি তালিকা তৈরি করি, যেখানে প্রতিটি জুটি সেই স্তরের কিছু শীর্ষবিন্দুর বাচ্চাদের সনাক্তকারীদের সাথে মিল রাখে। আমাদের যে স্তরের দুটি সূচিকাগুলি কাঠামোগত সমতুল্য যদি তাদের সংশ্লিষ্ট পূর্ণসংখ্যা জোড়া সমান হয়। লেক্সিকোগ্রাফিক অর্ডার ব্যবহার করে আমরা এগুলি বাছাই করতে এবং সমান সংখ্যক পূর্ণ সংখ্যার জোড়া পেতে পারি। আমরা এই সেটগুলিকে উপরের মতো একক শীর্ষে ছেদ করেছি এবং তাদের শনাক্তকারী দেব।
উপরোক্ত পর্যবেক্ষণগুলি প্রমাণ করে যে এই পদ্ধতিটি সংকুচিত গাছের জন্য কাজ করে এবং ফলাফল করে। মোট চলমান সময় হল সাথে সাথে আমাদের তৈরি তালিকাগুলি বাছাই করার জন্য প্রয়োজনীয় সময়। আমরা যে সংখ্যক পূর্ণ সংখ্যার জোড় তৈরি করি সেগুলি , এটি আমাদের প্রয়োজনীয় সময় হিসাবে চলমান মোট । প্রক্রিয়া শেষে আমরা কয়টি নোড ফেলে রেখেছি তা গণনামূলক তুচ্ছ (কেবলমাত্র আমরা কতজন সনাক্তকারীকে দিয়েছি তা দেখুন)।ও ( এন )এনও ( এন লগ)এন )