আমার শ্রোতার পিসিআই অডিটরদের জন্য কিছু প্রতিকারমূলক কম্পিউটার বিজ্ঞান।
আমি আপনাকে এলোমেলো পূর্ণসংখ্যার একটি অ্যারের হস্তান্তর করি। এর মধ্যে তিন নম্বর থাকলে আপনি কীভাবে বলতে পারবেন?
ঠিক আছে, এর সুস্পষ্ট উপায় রয়েছে: যতক্ষণ না আপনি "3" খুঁজে পান বা অ্যারে ছাড়েন ততক্ষণ পর্যন্ত ক্রমান্বয়ে নম্বরগুলি পরীক্ষা করুন। লিনিয়ার অনুসন্ধান। 10 নম্বর দেওয়া, আপনি ধরে নিতে হবে এটি 10 পদক্ষেপ নিতে পারে; এন সংখ্যা, এন পদক্ষেপ।
ছবি 1.png
লিনিয়ার অনুসন্ধান খারাপ। রৈখিক চেয়ে খারাপ করা কঠিন hard এর উপর উন্নতি করা যাক। অ্যারে বাছাই করুন।
ছবি 2.png
একটি সাজানো অ্যারে আলাদা কৌশল প্রস্তাব করে: অ্যারের মাঝখানে লাফিয়ে দেখুন এবং আপনি যে মানটি খুঁজছেন তা (বাম দিকে) কম বা ডানদিকের চেয়ে বড় কিনা তা দেখুন। পুনরাবৃত্তি করুন, যতক্ষণ না আপনি মানটি খুঁজে পান ততক্ষণে অর্ধেক অংশে অ্যারেটি কেটে নিন।
বাইনারি অনুসন্ধান। 10 নম্বর দেওয়া, এটি একটি সাজানো অ্যারেতে 3 টি পদক্ষেপ - 10 লগের লগ 2- লাগবে। ও (লগ এন) অনুসন্ধান দুর্দান্ত। আপনার যদি 65,000 উপাদান থাকে তবে সেগুলির মধ্যে একটিকে খুঁজতে কেবল 16 টি পদক্ষেপ নিতে চলেছে। উপাদানগুলি দ্বিগুণ করুন এবং এটি 17 টি পদক্ষেপ।
কিন্তু সাজানো অ্যারে স্তন্যপান; এক কিছুর জন্য, বাছাই করা লিনিয়ার অনুসন্ধানের চেয়ে ব্যয়বহুল। সুতরাং আমরা বাইনারি অনুসন্ধান বেশি ব্যবহার করি না; পরিবর্তে, আমরা বাইনারি গাছ ব্যবহার করি।
ছবি 3.png
একটি বাইনারি গাছ অনুসন্ধান করতে, আপনি শীর্ষে শুরু করুন এবং নিজেকে জিজ্ঞাসা করুন “আমার কীটি বর্তমান নোডের চেয়ে (বাম) থেকে কম বা (ডানদিকে) এর চেয়ে বড়)” এবং ঠিক আছে, ঠিক আছে, ঠিক আছে না হওয়া পর্যন্ত পুনরাবৃত্তি করুন, আপনি ইতিমধ্যে এই জিনিসটি জানেন। তবে সেই গাছটি বেশ সুন্দর, তাই না?
বাইনারি অনুসন্ধানের মতো একটি (ভারসাম্যপূর্ণ) বাইনারি গাছের সাথে অনুসন্ধান হ'ল গাছের উপাদানগুলির সংখ্যার সাথে ভিন্ন। বাইনারি গাছগুলি দুর্দান্ত: আপনি দ্রুত অনুসন্ধান এবং সাজানো ট্র্যাভারসাল পান, এমন কিছু যা আপনি হ্যাশ টেবিল থেকে বেরিয়ে আসেন না। বাইনারি গাছ হ্যাশ টেবিলের চেয়ে আরও ভাল ডিফল্ট সারণী বাস্তবায়ন। 2।
তবে বাইনারি গাছগুলি কেবলমাত্র গাছ-কাঠামোগত লক্কুয়েজ মেকানিজম নয়। বাইনারি র্যাডিক্স চেষ্টা করে, তাকে প্যাট্রিসিয়া গাছও বলা হয়, বাইনারি গাছের মতো একটি মৌলিক পার্থক্য সহ কাজ করে। প্রতিটি নোডের চেয়ে বেশি / কম-তুলনা করার পরিবর্তে, আপনি কিছুটা সেট করা আছে কিনা তা পরীক্ষা করে দেখুন, সেট করা থাকলে ডানদিকে ব্রাঞ্চিং এবং এটি না থাকলে বামে।
ছবি 4.png
বাইনারি র্যাডিক্স কীভাবে কাজ করে সে সম্পর্কে আমি অনেক কিছু রেখে চলেছি। এটি লজ্জাজনক, কারণ রেডিক্সের চেষ্টাগুলি কুখ্যাতভাবে নিম্নচিকিত্সা —- সেডজউইক কুখ্যাতভাবে তাদের "আলগোরিদম" -তে ছড়িয়ে দিয়েছেন, এবং তাদের জন্য উইকিপিডিয়া পৃষ্ঠাটি সফল হয়। লোকেরা এখনও তাদের কল কী তা নিয়ে তর্ক করে! ব্যাকলিংক এবং বিট-পজিশন লেবেলযুক্ত প্রান্তগুলির ব্যাখ্যার পরিবর্তে, এখানে একটি ছোট রুবি বাস্তবায়ন রয়েছে।
এখানে কেন রেডিক্সের চেষ্টাগুলি দুর্দান্ত:
Search performance varies with the key size, not the number of elements in the tree. With 16 bit keys, you’re guaranteed 16 steps
ভারসাম্য না রেখে গাছের উপাদানগুলির সংখ্যা নির্বিশেষে।
More importantly, radix tries give you lexicographic matching, which is a puffed-up way of saying “search with trailing wildcard”, or
"কমান্ড-লাইন-সমাপ্তি-শৈলী অনুসন্ধান"। র্যাডিক্স ট্রিতে আপনি দ্রুত "রো *" অনুসন্ধান করতে পারেন এবং "রোম" এবং "রোমসুল" এবং "রোসওয়েল" পেতে পারেন।
3।
আমি তোমাকে হারিয়েছি
এর প্রসঙ্গে রাখা যাক। চেষ্টা করা ইন্টারনেট রাউটিংয়ের জন্য একটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। রাউটিং সমস্যাটি এরকম হয়:
You have a routing table with entries for “10.0.1.20/32 -> a” and “10.0.0.0/16 -> b”.
You need packets for 10.0.1.20 to go to “a”
You need packets for 10.0.1.21 to to to “b”
এটি একটি বেসিক বাইনারি গাছের সাথে সমাধান করা একটি কঠিন সমস্যা, তবে একটি রেডিক্স ট্রাই দিয়ে আপনি কেবল "1010.0000.0000.0000.0000.0001.0100" (10.0.1.20 এর জন্য) এবং "1010." (10.0.0.0 এর জন্য) চাইছেন )। লেক্সিকোগ্রাফিক অনুসন্ধান আপনাকে রাউটিংয়ের জন্য "সেরা মিল" দেয়। আপনি উপরের রুবি কোডটিতে এটি ব্যবহার করে দেখতে পারেন; * "10.0.0.0" যোগ করুন। to_ip কে ট্রাইতে যোগ করুন এবং "10.0.0.1" .to_ip অনুসন্ধান করুন।
রাউটিং এবং রেডিক্স চেষ্টাগুলির মধ্যে যোগাযোগ এতই শক্তিশালী যে সর্বাধিক জনপ্রিয় জেনারেল-উদ্দেশ্যমূলক রেডিক্স ট্রাই লাইব্রেরি (সিপিএএন থেকে একটি) আসলে গেটডের বাইরে চুরি হয়ে গেছে। এটি গোলমাল, যাইহোক, এবং এটি ব্যবহার করবেন না।
আপনি যদি বুঝতে পারেন যে কোনও ত্রি কীভাবে কাজ করে তবে আপনি বুঝতে পারবেন কীভাবে নিয়মিত এক্সপ্রেশন কাজ করে understand চেষ্টাগুলি হ'ল ডিটারমিনিস্টিক সসীম অটোমেটা (ডিএফএ) এর একটি বিশেষ কেস, যেখানে শাখাগুলি বিট তুলনা এবং সর্বদা শাখাগুলির ফরওয়ার্ডের ভিত্তিতে থাকে। একটি ভাল রেজেক্স ইঞ্জিন কেবলমাত্র আরও "বৈশিষ্ট্যগুলি" সহ ডিএফএগুলি পরিচালনা করছে। যদি আমার ছবিগুলি আপনার কাছে বোঝায়, থম্পসনের এনএফএ-ডিএফএ হ্রাস অ্যালগরিদমের এই দুর্দান্ত নিবন্ধের চিত্রগুলিও এটিকে দেবে এবং সেই নিবন্ধটি আপনাকে আরও স্মার্ট করে তুলবে। 4।
আপনি একটি ব্যাকবোন আইএসপিতে একটি নেটওয়ার্ক অপারেটর। আপনার পৃথিবীতে মূলত "উপসর্গ" - আইপি নেটওয়ার্ক / নেটমাস্ক জোড়া রয়েছে। এই উপসর্গের নেটমাস্কগুলি আপনার কাছে অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ, 121/8 কোরিয়ার অন্তর্গত; 121.128 / 10 কোরিয়া টেলিকমের, 121.128.10 / 24 কেটি গ্রাহকের এবং 121.128.10.53 গ্রাহকের অভ্যন্তরে একটি কম্পিউটার। আপনি যদি বোটনেট বা স্প্যামিং অপারেশন বা কৃমি প্রচারের সন্ধান করছেন তবে সেই নেটমাস্ক নম্বরটি আপনার কাছে বেশ গুরুত্বপূর্ণ।
দুর্ভাগ্যক্রমে, যদিও তা গুরুত্বপূর্ণ, আইপি প্যাকেটে কোথাও একটি "নেটমাস্ক" - স্ট্যাম্পড নেই - নেটমাস্কগুলি সম্পূর্ণরূপে একটি কনফিগারেশন বিশদ detail সুতরাং, আপনি যখন ট্রাফিক দেখছেন, আপনার সাথে কাজ করার জন্য এই ডেটাটি মূলত:
ips.png
আশ্চর্যজনকভাবে, দেখার জন্য পর্যাপ্ত প্যাকেট দেওয়া, এটি নেটমাস্কগুলির সাথে অনুমান করার জন্য যথেষ্ট তথ্য। সনিতে কাজ করার সময় কেনজিরো চো চেষ্টা করার উপর ভিত্তি করে এটি করার জন্য সত্যিই মার্জিত উপায় নিয়ে এসেছিল। এখানে কীভাবে:
সফ্টওয়্যার রাউটারগুলির মতো ব্যবহৃত একটি বাইনারি র্যাডিক্স ট্রাইও নিন। তবে গাছে নোডের সংখ্যা বেঁধে 10,000 বলুন। পিঠের লিঙ্কে, আইপি শিরোলেখগুলির বাইরে ঠিকানা রেকর্ডিং করা, আপনি মুহুর্তে 10,000 নোড সরিয়ে দেবেন।
একটি তালিকাতে নোডের তালিকা সংরক্ষণ করুন, এলআরইউ ক্রমে সাজানো। অন্য কথায়, আপনি যখন কোনও নোডের সাথে কোনও আইপি ঠিকানার সাথে মেলে, তখন নোডটিকে "স্পর্শ করুন", তালিকার শীর্ষে রেখে ic আস্তে আস্তে প্রায়শই দেখা যাওয়া ঠিকানাগুলি উপরের দিকে বুদ্বুদ হয়ে যায়, এবং দেখা যায় এমন নোডগুলি নীচে ডুবে যায়।
চিত্র 6.png
এখন কৌশল। যখন আপনার নোডগুলি শেষ হয়ে যায় এবং একটি নতুন প্রয়োজন হয়, তালিকার নীচ থেকে দাবি করুন। তবে আপনি যখন করবেন, নোড থেকে ডেটাটিকে তার পিতামাতার কাছে রোল করুন, এরকম:
চিত্র 5.png
10.0.1.2 এবং 10.0.1.3 ভাই / 32s, 10.0.1.2/31 এর দুটি অংশ। তাদের পুনরায় দাবি জানাতে, তাদেরকে 10.0.1.2/31 এ মার্জ করুন। যদি আপনার 10.0.1.2.2/31 দাবি করতে হয় তবে আপনি এটি 10.0.1.0/31 এর সাথে 10.0.1.0/30 ফর্ম করতে মার্জ করতে পারেন।
এটি বলুন, এক মিনিট, এবং স্ট্যান্ডআউট উত্সগুলি এলআরইউ তালিকার শীর্ষে অবস্থান করে গাছের মধ্যে তাদের অবস্থান রক্ষা করবে, যখন এম্বিয়েন্ট / 32 শব্দের বুদবুদগুলি 0/0 অবধি আছে। উপরের আইপি'র কাঁচা তালিকার জন্য, 100 টি নোড ট্রি সহ, আপনি এটি পান।
চো এই কালজয়ী আগুরি বলে। 5।
আগুড়ি বিএসডি লাইসেন্সপ্রাপ্ত। আপনি এটি ডাউনলোড করতে এবং ড্রাইভারের প্যাকেটগুলি পিসি্যাপের মাধ্যমে দেখেন এমন একটি ড্রাইভার প্রোগ্রাম চের পুরানো হোম পৃষ্ঠা থেকে দেখতে পারেন। 6।
আমি এটি নিয়ে কোথাও যাচ্ছি, তবে আমি এখন এই পোস্টে 1300 শব্দ করছি এবং আপনি যদি একজন অ্যালগরিদম ব্যক্তি হন তবে আপনি এখনই আমাকে ক্লান্ত করে দিয়েছেন, এবং যদি আপনি না হন তবে আপনি আমার দ্বারা ক্লান্ত এখন। সুতরাং, অগুরি ডুবে যেতে দিন, এবং আমি আপনাকে এই সপ্তাহের শেষের দিকে এটি করার জন্য দুর্দান্ত এবং অকেজো কিছু দেব।
সেখানে ছড়িয়ে ছিটিয়ে রয়েছে অসংখ্য লিঙ্ক। দুর্ভাগ্যক্রমে, সংরক্ষণাগার.অর্গ চিত্রগুলি রাখে না, কেবল পাঠ্য রাখে, যার মধ্যে বেশ কয়েকটি হারিয়ে গেছে। এখানে এটি সংরক্ষণাগারভুক্ত রয়েছে: