বিমূর্ত ডেটা প্রকার এবং ডেটা স্ট্রাকচার


32

এই পদগুলি বোঝা আমার পক্ষে বেশ কঠিন। আমি গুগলে অনুসন্ধান করেছি এবং উইকিপিডিয়ায় কিছুটা পড়েছি তবে আমি এখনও নিশ্চিত নই। আমি এখনও পর্যন্ত স্থির করেছি যে:

অ্যাবস্ট্রাক্ট ডেটা টাইপ নতুন ধরণের সংজ্ঞা, এর বৈশিষ্ট্য এবং ক্রিয়াকলাপ বর্ণনা করে।

ডেটা স্ট্রাকচার এডিটির একটি বাস্তবায়ন। অনেক এডিটি একই ডেটা স্ট্রাকচার হিসাবে প্রয়োগ করা যেতে পারে।

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




উত্তর:


24

সহজ কথায় বলতে গেলে, একটি এডিটি (অ্যাবস্ট্রাক্ট ডেটা টাইপ) হ'ল যুক্তিযুক্ত বিবরণ হয়, যখন ডেটা স্ট্রাকচার কংক্রিট থাকে।

কোনও এডিটি ডেটা এবং এটির কৌশলগত পরিবর্তন এবং তা পরিবর্তন করার জন্য ক্রিয়াকলাপ হিসাবে ভাবুন।

একটি ডেটা স্ট্রাকচার হ'ল আসল, কংক্রিটযুক্ত জিনিস । এটি একটি অ্যালগরিদমের মধ্যে প্রয়োগ এবং ব্যবহার করা যেতে পারে।


তবে আমি একটি অ্যালগরিদমের অভ্যন্তরে একটি স্ট্যাক এবং কুইও প্রয়োগ করতে পারি (এটি ADT)। না?
ফেদেরিকো

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

53

এডিটি হ'ল একটি ইন্টারফেসের ( এটি কী করে ) কোনও ডেটা স্ট্রাকচার একটি শ্রেণীর কাছে কীভাবে হয় ( এটি এটি কীভাবে করে )।

কয়েকটি উদাহরণ:

ADT: List
DS:  ArrayList, LinkedList...

ADT: Map
DS:  HashMap, TreeMap...

আমার ধারণা আপনি পয়েন্টটি পেয়ে গেছেন


এডিটি কোনও ডেটা স্ট্রাকচারের সাধারণ ধরণ হিসাবে বলা যেতে পারে?
ওয়েস কুরেশি

1
এটি চিহ্নিত উত্তর হওয়া উচিত। সাধারণ মানুষের পক্ষে এটি আরও সহজ বলা যায় না।
deppfx

সহজ এবং কার্যকরী উত্তরের জন্য @ ড্যাগলিনিজকে ধন্যবাদ জানাই। এটি উত্তর হিসাবে চিহ্নিত করা উচিত।
সরুন ইউ কে

1
ধরছেন না কেন ওই কিন্তু আমি এখানে বাক্যে কথন একটি ছোট পুনরায় বিন্যাস পছন্দ করা: ADT is to a Data Structure, what an Interface (what it does) is to a Class (how it does it)। উদাহরণগুলি স্পট হয়।
আদিত্য এমপি

10

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

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

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

আমরা জানি যে একটি অ্যাবস্ট্রাক্ট ডেটা টাইপ এমন একটি ডেটা টাইপ যা নিম্নলিখিত দুটি শর্ত পূরণ করে:

  1. টাইপ এবং ক্রিয়াকলাপগুলির প্রতিনিধিত্ব বা সংজ্ঞাটি একটি একক সিনট্যাকটিক ইউনিটে অন্তর্ভুক্ত।

  2. প্রকারটি ব্যবহার করে এমন প্রোগ্রামের ইউনিটগুলি থেকে এই ধরণের অবজেক্টের উপস্থাপনা লুকানো থাকে, সুতরাং কেবলমাত্র সেই ধরণের অবজেক্টগুলির জন্য সরাসরি ক্রিয়াকলাপগুলি টাইপের সংজ্ঞাতে প্রদত্ত।

অ্যাবস্ট্রাক্ট ডেটা টাইপের সংজ্ঞায়িত কোনও ব্যবহারকারীর এই সরবরাহ করা উচিত:

  1. একটি টাইপ সংজ্ঞা যা প্রোগ্রাম ইউনিটগুলিকে প্রকারের ভেরিয়েবল ঘোষণা করতে দেয় তবে এই ভেরিয়েবলগুলির উপস্থাপনা লুকায়।

  2. ধরণের অবজেক্টগুলি ম্যানিপুলেট করার জন্য অপারেশনের একটি সেট।

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

struct abc

{int x;

float y;

};

উপরের কাঠামোর সংজ্ঞাটি কোনও ভেরিয়েবল তৈরি করে না, বরং এটি একটি নতুন ধরণের তৈরি করে। এই ধরণের ভেরিয়েবলগুলি বিল্ট ইন টাইপের ভেরিয়েবলগুলির অনুরূপভাবে তৈরি করা যেতে পারে।

struct abc a;

টাইপডেফ কীওয়ার্ডটি আমাদের নতুন প্রকারের জন্য নতুন ধরণের নাম তৈরি করতে দেয়।

উদাহরণ স্বরূপ:

typedef struct abc AB;

যেখানে এবি একটি নতুন টাইপের নাম যা এখন নতুন ধরণের তৈরি করতে ব্যবহৃত হতে পারে।

AB b;

ডেটা স্ট্রাকচার: নিম্নলিখিত ডেটা স্ট্রাকচারের বৈশিষ্ট্যগুলি রয়েছে:

  1. এটিতে উপাদান উপাদান আইটেম রয়েছে, যা পারমাণবিক বা অন্য ডেটা কাঠামো (এখনও একটি ডোমেন) হতে পারে be

  2. এক বা একাধিক উপাদান উপাদানগুলির ক্রিয়াকলাপের সেট।

  3. উপাদানগুলি একে অপরের সাথে এবং সামগ্রিকভাবে কাঠামোর সাথে কীভাবে সম্পর্কিত (বিধিগুলি) তার বিধিগুলি সংজ্ঞায়িত করে।

ডাটা স্ট্রাকচার:

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

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


0

প্রথমত, ডেটা স্ট্রাকচারগুলিতে টার্মিনোলজগুলি খুব বিভ্রান্তিকর হতে পারে।

এডিটি হ'ল তত্ত্ব বা মডেল বা গাইডলাইন ইত্যাদির মতো যা ডেটা স্ট্রাকচারটি কীভাবে আচরণ করা উচিত, কোন ধরণের ক্রিয়াকলাপকে সমর্থন করা উচিত তা বোঝায় fundamental তিনটি মৌলিক বিমূর্ত তথ্য প্রকারের ধারক, অভিধান এবং অগ্রাধিকারের সারি। উদাহরণস্বরূপ অভিধানটি, এটি আমাদের বলে যে প্রতিটি ডাটা স্ট্রাকচার যা এ অভিধানটি এডিটি প্রয়োগ করে তাতে কী-মান জোড়, কীগুলির উপর ভিত্তি করে অনুসন্ধান, আইটেম সন্নিবেশ, প্রদত্ত কীটির উত্তরসূরি এবং পূর্বসূরীর সন্ধান ইত্যাদিকে অবশ্যই সমর্থন করতে হবে must

এখন এডিটি-র উপরের এই প্রয়োগকারী সমস্ত কিছু হ'ল ডেটা স্ট্রাকচার (ডিএস) , ডেটা স্ট্রাকচার হ'ল আসল জিনিস যা আপনি আপনার সমস্যার মধ্যে প্রয়োগ করেন এবং লাইব্রেরিগুলির ভিতরে খুঁজে পান। অভিধানের ক্ষেত্রে, আপনি এটি অ্যারে বা লিঙ্কযুক্ত তালিকার মাধ্যমে প্রয়োগ করতে বেছে নিতে পারেন।

আমি মনে করি যে কেউ যখন তাদের ডিএসের নাম এডিটি হিসাবে রাখেন, তখন সত্যিকারের বিভ্রান্তি দেখা দেয়, উদাহরণস্বরূপ কিছু লোক ডিক্টিম্পিমুলেশনটির পরিবর্তে তাদের পূর্ববর্তী ডিএসকে 'ডিকশনারি' হিসাবে ডেকে নেবেন যা পুরোপুরি আইনী, এটি কিছুটা বিভ্রান্তির কারণ হয়ে দাঁড়ায়।

তথ্যসূত্র: স্কিয়েনা: অ্যালগরিদম ডিজাইন ম্যানুয়াল

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