আপনি ব্যবহারিক পরিস্থিতিতে সবচেয়ে জটিল ডেটা স্ট্রাকচারটি কী ব্যবহার করেছেন? [বন্ধ]


17

এই প্রশ্নের জীবাণুটি এমন একটি আলোচনা থেকে উঠে এসেছিল যেটি আমি ইন্ডাস্ট্রির কয়েকজন সহযোগী বিকাশকারীকে নিয়েছিলাম।

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

সুতরাং কোনও ব্লুম ফিল্টার বা এড়াল-তালিকাগুলি বা স্প্লে গাছ আপনার সিএস জাঙ্কিজের জন্য নেই। সুতরাং এখানে প্রশ্নটি আবার (আবার): আপনি অফিসে ব্যবহার করেছেন বা ব্যবহার করেছেন এমন সবচেয়ে জটিল ডেটা কাঠামোটি কী?

বাস্তব / পরিশীলিত রিয়েল ওয়ার্ল্ড সফটওয়্যার কতটা তা উপলব্ধি করতে সহায়তা করে।


অন্যেরা লিখেছেন, না নিজেরাই লিখেছেন?

আমার মূল অভিপ্রায়টি যা কিছু হোক না কেন আত্ম বিকশিত হয়েছিল, তবে আমি মনে করি এটি প্রশ্নের একটি আকর্ষণীয় মাত্রা যুক্ত করে। মূল প্রশ্ন সম্পাদিত।
Fanatic23

এটিকে জটিল করার অর্থ এটি পরিশীলিত নয়। সরল = সর্বদা ভাল।
tp1

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

অপ্রয়োজনীয় মান নির্ধারণের জন্য -১। আমি ঠিক ততটাই বলতে পারি: এই দিনগুলিতে, আপনি যদি নিজেরাই ডেটাস্ট্রাকচার প্রয়োগ করেন তবে আপনি বোবা এবং একগুঁয়ে হয়ে যাচ্ছেন। পরবর্তী স্মার্ট বাচ্চা হবেন না যিনি ভাবেন যে তিনি কোনও ডেটাস্ট্রাকচারটি ভুল উপায়ে প্রয়োগ করতে পারবেন।
পিটার বি

উত্তর:


7

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


7

আমি জাভা বিকাশকারী। জাভা সংগ্রহ ফ্রেমওয়ার্ক আমার 90% ডেটা স্ট্রাকচার সমস্যাগুলি সমাধান করতে পারে, অন্য 10% এর জন্য প্রচেষ্টা প্রয়োজন। আমি মনে করি আপনি যদি বিশেষজ্ঞদের দ্বারা রচিত অত্যাধুনিক স্ট্যান্ডার্ড লিবটি সত্যিই বুঝতে পারেন তবে আপনি বেশিরভাগ ক্ষেত্রে তাদের সহায়তা পাবেন।

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

যদি আমাকে জটিল ডেটা কাঠামো লিখতে হয় তবে আমি পাঠ্যপুস্তক তুলে নেব :)


4

আমি চাকরিতে সবচেয়ে জটিল ডেটা স্ট্রাকচারটি ব্যবহার করেছিলাম ট্রাই। তবে তা বিশ বছর আগে ছিল।

শিল্প সফটওয়্যার বিকাশের সমস্যা হ'ল বেশিরভাগ শিল্প প্রোগ্রামার কম্পিউটার বিজ্ঞান (কমপ্সসি) গ্রেড নয়; অতএব, গড় কমপসসি গ্রেডের যে কৌশলগুলি মঞ্জুর হয় তা রুটি-মাখন প্রোগ্রামারদের বজায় রাখা খুব কঠিন বলে মনে করা হয়।

শিল্পে সাধারণ কমপিএসসি জ্ঞানের অভাব একটি গুরুতর সমস্যা। উদাহরণস্বরূপ, আমি যে সফটওয়্যার বিকাশকারীদের সাথে দেখা করেছি তার সংখ্যা আমি হারিয়ে ফেলেছি যারা বুঝতে পারেন না যে! (A! = 5 &&B! = 3) এবং a == 5 || b == 3 লজিক্যাল সমতুল্য। DeMorgan এর উপপাদ্য প্রয়োগ করতে জানেন এমন যে কেউ বুঝতে পারে যে এই অভিব্যক্তিগুলি যুক্তিযুক্তভাবে সমতুল্য। বেশিরভাগ নন-কমপ্সসিএসই স্নাতক ডি-মরগানের উপপাদ্য সম্পর্কে কখনও শুনেন নি। যদি কেউ কোনও উল্লেখযোগ্য কোড বেস জরিপ করে তবে একজন এমন অনেক অভিব্যক্তি খুঁজে পাবেন যা নেতিবাচক যৌক্তিক subexpressions এড়ানো হয়। কোডটির পঠনযোগ্যতা যা অবহেলিত নেতিবাচক যৌক্তিক subexpressions রয়েছে প্রায়শই সর্বদা এই অভিব্যক্তিগুলিকে তাদের অ-অবহেলিত আকারে রূপান্তরিত করে উন্নত করা হয়।


5
"ডাউন" ভোট দেওয়ার ক্ষেত্রে যে কাউকে আমার পরামর্শটি হ'ল যে কেউ নিজের মন্তব্য "যুক্ত" করে কেন তার "ডাউন" ভোট দেয় তা মন্তব্য করা উচিত। আমি ভিন্ন মতামত কারও সাথে পরিচালনা করতে পারি। তবে আমি যা পরিচালনা করতে পারি না তা কাপুরুষতা।
বিট-টুইডলার

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

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

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

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

2

ইভেন্ট-ভিত্তিক সিমুলেশনের জন্য আমি একবার ক্যালেন্ডার সারি (ও (1) অগ্রাধিকারের সারি) লিখেছিলাম যেখানে প্রোফাইলিং দেখিয়েছিল যে বিদ্যমান স্তূপটি একটি বাধা।

আমি এমন একটি পণ্যও প্রকাশ করেছি যাতে প্রায় 80000 টি রাজ্য সমেত একটি সসীম রাষ্ট্রীয় মেশিন রয়েছে - এটি উত্পন্ন করার কোডটি কিছুটা মজাদারভাবে বলা হয়েছিল, কমপক্ষে বলতে গেলে।


2

দীর্ঘ, দীর্ঘ, আগে, একটি গ্যালাক্সিতে ... একটি দলে কাজ করেছিলেন যারা এসেম্বলারের একটি আরটিওএসে নথের "বন্ধু বাফার" ব্যবহার করেছিলেন।

এছাড়াও, 1024 x 1024 বিশ্বে 256 প্রজন্মের সাথে কনওয়ের গেম অফ লাইফ।


1

সত্যিই খুব বেশি বিশেষ কিছু ব্যবহার করা হয়নি, স্ক্র্যাচ থেকে এটি দ্বিগুণ-লিঙ্কযুক্ত তালিকা হবে

খুব উত্তেজনাপূর্ণ নয়, আমি অন্যান্য কাঠামো ব্যবহার করেছি। তবে আপনার প্রশ্নটি শুরু থেকেই বলেছে said


সি ++ তে, এটি std::listআসলে জটিল এবং কিছুই নেই: আমি লাল-কালো গাছ / এভিএল গাছকে আরও জটিল বলে মনে করি, এই সমস্ত পুনঃসংশ্লিষ্ট পরিস্থিতিতে!
ম্যাথিউ এম।

@ ম্যাথিউ স্ট্যান্ড :: মানচিত্র এবং আপনি সম্ভবত একটি আরবি ট্রি পাবেন।
অফাদার

1

আর্থিক তথ্যের জেনেরিক তালিকা সম্বলিত হ্যাশটেবলগুলির একটি গাছ - এমনকি জিজ্ঞাসা করবেন না। কখনও কখনও আমি ইচ্ছুক আমি একটি কাউবয় ছিল। আহ, তারার নীচে সাধারণ জীবন ...


চশমা অপসারণ "প্রিয় Godশ্বর।"
লেন জোসেফ

1

আমাকে সুডোকু দ্রাবকের জন্য ডান্সিং লিঙ্কস অ্যালগোরিদমের জন্য স্ক্র্যাচ থেকে একটি বিজ্ঞপ্তি ডাবল-লিঙ্কড-তালিকা কাঠামো লিখতে হয়েছিল । এটি কোনও রুবিকের কিউব ডিজাইনের মতো মনে হয়েছিল। পুরো কাঠামোটি মূলত তালিকার একটি তালিকা ছিল - প্রতিটি নোডের সাথে অন্য চারজনকে নির্দেশ করে to


1
এটি সুডোকু সলভারের জন্য ওভারকিলের মতো শোনাচ্ছে, যেহেতু ব্রুট ফোর্স ব্যাকট্র্যাকিং অ্যালগরিদম ধাঁধাটি ডেটাতে প্রবেশের চেয়ে দ্রুত সমাধান করে।
কেভিন ক্লিন

3
@ কেভিন, নাচের লিঙ্কগুলি হিংস্র-শক্তি ব্যাকট্রাকিং অ্যালগরিদম - তবে একটি প্রশংসনীয় উপদ্বীপের সাথে।
পিটার টেলর

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

1

আমি একবার একটি বিশেষায়িত ক্যাশের জন্য একটি ওজনযুক্ত পথ দৈর্ঘ্যের গাছ ব্যবহার করেছি। ঐটা মজা ছিল. একটি malloc()প্রতিস্থাপনের জন্য আমার নিজের গাদা পরিচালনার রুটিনগুলিও লিখেছেন , তবে প্রচুর লোক তা করেছে।


0

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

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

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


আমার উদ্দেশ্যটি ছিল কিছু বিদেশী ডেটা কাঠামোকে জোর করা ছিল না But তবে এটি একটি দুঃখজনক পরিস্থিতি যখন আপনার বাক্সের বাইরে কিছু দরকার হয় এবং কেবলমাত্র কর্পোরেট পলিসি যেমন হুকুম দেয় তাই ইতিমধ্যে যা পাওয়া যায় তা মোকাবেলা করতে হবে।
ফ্যান্যাটিক

0

একটি অগ্রাধিকার সারি গণনা করা হয়? এটি আমার লেখা প্রতিটি বাস্তব-সময়ের অ্যাপ্লিকেশনটিতে আসে in এটি সম্প্রতি সম্প্রতি জাভা গ্রন্থাগারের অংশে পরিণত হয়েছে (জাভা 1.5)।

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

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

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