মানচিত্রার কি ধরণের সমস্যা সমাধান হয়?


61

আমি কিছুক্ষণের জন্য ম্যাপ্রেডস সম্পর্কে পড়ছি - তবে আমি যা বুঝতে পারি না তা হ'ল কেউ কীভাবে মানচিত্রের ব্যবহার (বা ব্যবহার না করে) সিদ্ধান্ত নেবেন।

আমি বোঝাতে চাইছি এমন কী কী সমস্যাগুলির নিদর্শন যা সংকেত দেয় যে ম্যাপ্রেডুস ব্যবহার করা যেতে পারে।

উত্তর:


47

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

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

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


আপনি যদি ট্র্যাভেল সেলসম্যান সমস্যার একটি আনুমানিক উত্তর খুঁজছেন, আপনি মার্জ করতে সর্বনিম্ন উত্তরটি ন্যূনতম দূরত্বে বেছে নিতে পারেন।
ড্যান_ওয়াটারওয়ার্থ

কেন ম্যাপ্রেডুস বিক্রয়কর্মী ভ্রমণের জন্য উপযুক্ত হবে না সে সম্পর্কে আপনার ব্যাখ্যা আমি বুঝতে পারি নি।

9
এটা তোলে খোঁজার জন্য উপযুক্ত একটি সমাধান, এমনকি একটি খুব ভাল এক - শুধু ছোট সেটে শহরগুলোর সেট পার্টিশন, যেমন 1-10, 11-20, 21-30, তাদের মধ্যে অনুকূল যাত্রাপথ খুঁজে, এবং তাদের হপস সাথে যোগ 10-> 11, 20-> 21 এবং 30-> 1। তবে সমস্যার মূল বিষয়টি হল সর্বোত্তম রুটটি সন্ধান করা, এবং সর্বোত্তম রুটটি এভাবে বিভক্ত হওয়ার কোনও গ্যারান্টি নেই - এটি আসলে 1-> 25 দিয়ে শুরু হতে পারে! অন্য কথায়, সঠিক বিভাজনগুলি খুঁজতে, আপনাকে অবশ্যই ইতিমধ্যে সমাধানটি ইতিমধ্যে জেনে নিতে হবে! পার্টিশন-এবং পুনরায়
সংশ্লেষের কৌশলটির

2
@ কিলিয়ানফথ, আপনি সমাধান স্থানটি বিভক্ত করে 1 থেকে শুরু করে 2 থেকে শুরু করে ... এবং তারপরে আবার স্থানটি একইভাবে ভাগ করে এই নোডের প্রতিটি সমস্যার সমাধান করতে পারেন। মূলে মিশে যাওয়া কেবল সংক্ষিপ্ততম পথটি সন্ধান করা হয়, অন্য একটি শাখায় মার্জ করা হ'ল সংক্ষিপ্ততম 'শিশু রুট + শাখা থেকে শিশু পর্যন্ত রুট' সন্ধান করে।
ড্যান_ওয়াটারওয়ার্থ

3
আপনার যদি সমাধান হয়ে থাকে তবে মনে রাখবেন যে আপনি যদি 40 বছরের কম বয়সী হন তবে আপনি কেবলমাত্র আপনার ফিল্ডস পদকের জন্য যোগ্য
ফ্রান্সেসকো

28

বিতরণ করা কম্পিউটিং ব্যবহার করে সমস্যাটি কী দক্ষতার সাথে সমাধান করা যায়?

যদি এই প্রশ্নের উত্তর হ্যাঁ হয়, তবে আপনার মানচিত্রের জন্য প্রার্থীর সমস্যা আছে। সমস্যাটির কারণটি নিজেকে ছোট বিচ্ছিন্ন সমস্যার মধ্যে বিভক্ত করার জন্য ndsণ দেয় is

আপনার টাস্ক: এই বইটি পার্স করুন

একটি উদাহরণ এটি ইলাস্ট্রেট করতে ভাল কাজ করে। আপনার কাছে একটি বড় দলিল আছে ( মোবি ডিক হরম্যান মেলভিল ) এবং আপনার কাজ এটিতে ব্যবহৃত সমস্ত শব্দের একটি ফ্রিকোয়েন্সি বিশ্লেষণ করা।

ক্রমিক পদ্ধতি

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

মানচিত্রের পদ্ধতি

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

পাঠ্যটির একটি লাইন পড়ার এবং শব্দগুলি সংগ্রহ করার প্রক্রিয়াটি হ'ল মানচিত্রের পর্ব (আপনি একটি সাধারণ মানচিত্র তৈরি করেন যা লাইনটিতে শব্দগুলি তাদের ফ্রিকোয়েন্সি 1,2,3 ইত্যাদির সাথে উপস্থাপন করে), তারপরে হ্রাস পর্বটি যখন প্রতিটি মেশিন তাদের লাইনটি সংযুক্ত করে তখন একক সামগ্রিক মানচিত্রে মানচিত্র।

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

সারাংশ

সুতরাং, সংক্ষেপে বলতে গেলে, যদি আপনার সমস্যাটি যদি সেই মানগুলিকে পৃথকীকরণের জন্য কী, মান, সামগ্রিক ক্রিয়াকলাপ দ্বারা প্রতিনিধিত্ব করে ndsণ দেয় তবে আপনার মানচিত্রের জন্য প্রার্থীর সমস্যা আছে।


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

2
ফর্সা পয়েন্ট - তবে এটি একটি দরকারী ভূমিকা হিসাবে কাজ করে এবং কাউকে তাদের সমস্যার "বাক্স" দেওয়ার অনুমতি দেয়।
গ্যারি রোয়ে

13

মানচিত্রের প্যাটার্নটি কার্যকরী প্রোগ্রামিংয়ের পৃথিবী থেকে নেওয়া হয়েছে। এটি সমান্তরালভাবে একটি ডেটা-স্ট্রাকচারের উপরে ক্যাটরমোরিজম নামক কিছু প্রয়োগ করার প্রক্রিয়া for কার্যকর প্রতিটি প্রোগ্রামার রূপান্তর বা সংক্ষিপ্তকরণের জন্য কার্যকরী প্রোগ্রামাররা ক্যাটমোরফিজমগুলি ব্যবহার করে।

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

উদাহরণস্বরূপ, আপনি একটি ছদ্মবেশ ব্যবহার করে গাছের আকার গণনা করতে পারেন; আপনি সমস্ত বাচ্চাদের একের জন্য গুণিত মানগুলির যোগফল গণনা করবেন।


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

1
@ স্কারফ্রিজ, আমি ধরে নিয়েছি যে ওপি গুগলের নির্দিষ্ট কাঠামোর কথা উল্লেখ করছে না। আমি উইকিপিডিয়া নিবন্ধটি পরামর্শ দিয়েছিলাম যে এটি কেবলমাত্র তালিকার জন্য বা পোস্ট করার আগে সাধারণভাবে গাছের জন্য ব্যবহৃত হয়। en.wikipedia.org/wiki/MapReduce#Overview
dan_waterworth

2
যদি কেবল এটি ম্যাপফোল্ড বলা হত ; এটি বুঝতে এত সহজ হবে।
আদিত্য

6

এই ডাব্লুপিআই - মানচিত্র হ্রাস (পিপিটি) এর অ্যাপ্লিকেশনগুলি আপনার আগ্রহী হতে পারে। এটি এমআর-এর বিভিন্ন অ্যাপ্লিকেশনগুলি নিয়ে আলোচনা করে এবং আলোচিত মামলার একটি হিসাবে এটি দেখায় যে 100 টি ইসি 2 উদাহরণ এবং 24 ঘন্টা ব্যবহার করে নিউইয়র্ক টাইমস স্ক্যান করা নিবন্ধগুলির 4 টিবি পিডিএফ নথির 1.5 টিবিতে রূপান্তর করতে সক্ষম হয়েছিল।

এমআর এম দ্রুতগতিতে পারফরম্যান্সে সহায়তা করেছিল এমন আরও একটি উদাহরণ এখানে রয়েছে: অ্যাসটার - এসকিউএল ম্যাপ হ্রাস , এসকিউএল-ম্যাপ হ্রাস প্রযুক্তির কিছু কেস স্টাডি দেখায় যাতে জালিয়াতি সনাক্তকরণ, রূপান্তরকরণ এবং অন্যান্য।


1
যদি আপনি স্ক্যান করা নিবন্ধ প্রতি এক পিডিএফ দিয়ে শেষ করেন তবে সেগুলি আপনি মানচিত্রের পরিবর্তে কেবল বিতরণ মানচিত্র ব্যবহার করছেন। মানচিত্র-হ্রাসে আপনি একক ফলাফল পেতে মানচিত্রের ফলাফলগুলিতে হ্রাস প্রয়োগ করেন।
পিট

6

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

মানচিত্র / হ্রাস করার উপায়টি হ'ল:

  • মানচিত্রে কয়েকটি কী (কে 1) এবং মান (v1) লাগে এবং সেগুলি কী (কে 2) এবং মান (v2) এর নতুন সেটে ম্যাপ করে।
  • হ্রাস একই কে 2 কী দিয়ে সমস্ত ভি 2 মান নিয়ে যায় এবং একটি নতুন মান (v3) উত্পাদন করে।

ফলাফলটি হ'ল (কে 1, ভি 1) জোড়ার একটি তালিকা (ভি 3) এস এর তালিকায় রূপান্তরিত হয়। (অবশ্যই, মান "ভি 3" একটি সংমিশ্রণ হতে পারে যা কে 2 অন্তর্ভুক্ত করে, যা কে 1 এর সমান হিসাবে সংজ্ঞায়িত করা যেতে পারে))

সুতরাং আপনি এটি ব্যবহার করুন:

  1. আপনার যদি এত বেশি ডেটা থাকে তবে এটি শুরু করার জন্য এক বা দুটি সার্ভারের মাধ্যমে ক্রমানুসারে খুব বেশি সময় নিতে পারে এবং

  2. আপনি মান বা কী মান জোড়গুলির তালিকা হিসাবে আউটপুট ডেটা ধারণা করতে পারেন (সাধারণত আপনি যখন "কী" মনে করেন কেবল "অনন্য লেবেল" মনে করেন তখন খুব শক্ত হয় না), এবং

  3. সম্পর্ক যাই হোক না কেন, আপনি নিশ্চিত যে প্রতিটি ইনপুট ডেটা কেবল একটি আউটপুট কী জন্য আউটপুট মানকে প্রভাবিত করে।

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

মানচিত্রের পর্যায়ে আউটপুট কী দ্বারা সমস্ত ইনপুট ডেটা বিভাজন করতে হবে। এটি আউটপুট কী (যা হ্রাস পর্ব দ্বারা সম্পন্ন) এর সাথে যুক্ত আউটপুট মান উত্পাদন করতে হবে না, তবে এটি প্রতিটি ইনপুট কী মান জোড়কে সর্বাধিক এক আউটপুট কী এর মানতে অবদান রাখতে হবে। যদি ডেটা খুব আন্তঃসম্পর্কিত হয় তবে মানচিত্র হ্রাস সমস্যার সমাধান করতে সক্ষম নাও হতে পারে। অন্যদিকে, এটি কেবল এমন হতে পারে যে আপনাকে একাধিক রাউন্ডের মানচিত্র / হ্রাস করতে হবে।

যদি আপনি কীভাবে আপনার ডেটা ট্রান্সফারেশনটিকে মানচিত্রে / হ্রাস করতে চান তা বুঝতে না পারেন তবে অবশ্যই এটি কোনও সমাধান নয়।

মানচিত্র / হ্রাস হ্যান্ডেল করতে পারে এমন কোনও সমস্যার মধ্যে কোনও সমস্যা দ্রবীভূত হতে পারে তা নির্ধারণের জন্য একটি আসল শিল্প রয়েছে। উদাহরণস্বরূপ v1 এবং v2 ইনপুট বা আউটপুট ডেটা সেটগুলিতে নাও থাকতে পারে। আপনি যদি কেবল ইনপুট ডেটাতে অনন্য আইটেমগুলি গণনা করতে চান তবে কে 1 = কে 2 = একটি আইটেম এবং ভি 1 = ভি 2 = 1 বা 0 বা সত্যিই কিছু। কে 2 এর সংখ্যার যোগফল দেওয়া হওয়ায় কেবলমাত্র v3 উত্পাদন হ্রাস করুন।

সুতরাং মানচিত্র / হ্রাস ব্যবহার করে কোনও ডেটা ট্রান্সফর্মেশন করা যায় না তা নিশ্চিত করে বলা শক্ত, তবে উপরেরটি আপনাকে কয়েকটি গাইডপোস্ট দেয়।


3

মানচিত্রের বিমূর্ততার কোনও স্তরে ঠিক 2 টি কার্যক্রমে গঠিত যে কোনও সমস্যা নিয়ে কাজ করে। প্রথম ফাংশনটি ইনপুট সেটের প্রতিটি আইটেমের জন্য প্রয়োগ করা হয় এবং দ্বিতীয় ফাংশন ফলাফলগুলিকে একত্রিত করে।

সুতরাং, যে কোনও সময় আপনি (1) ফলাফল (এন) ইনপুটগুলি থেকে পেতে চান, এবং সমস্ত ইনপুটগুলি (1) ফাংশন দ্বারা পরীক্ষা করা / ব্যবহার করা যেতে পারে, আপনি মানচিত্রের ব্যবহার করতে পারেন। আবার এটি বিমূর্ততার কিছু নির্দিষ্ট স্তরে। (1) ফাংশনটি এমন কিছু গ্রুপিং ফাংশন হতে পারে যা ইনপুটটি পরীক্ষা করে এবং ঠিক করে দেয় যে আরও কয়েকটি ফাংশন ব্যবহার করতে হবে।

আপনি কতটা ইনপুট পাবেন তা যখন আপনি আগেই জানেন না, যখন আপনাকে কাজের বিচক্ষণ "ইউনিট" ভাগ করে নেওয়া প্রয়োজন হয় বা আপনি যখন পুরো ফলাফলকে উপস্থাপনের জন্য একক রিটার্ন চান তখন (IE পাঁচ হাজার ইউনিট পরীক্ষা চালাচ্ছে) এটি কার্যকর , এবং যদি x% এর চেয়ে কম ব্যর্থ হয় তবে সাফল্য ফিরে আসুন)।


3

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

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

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

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

সবচেয়ে সহজ উদাহরণ যা মানচিত্র হ্রাস নিয়ে ভাল কাজ করে তা হ'ল জিনিস গণনা, যা খুব সস্তা হ্রাস। এই কারণেই শব্দ গণনা প্রায়শই মানচিত্র হ্রাসের জন্য ব্যবহৃত উদাহরণ। আপনি যে ইউজকেসটি দিয়ে পারফরম্যান্সের জন্য লিনিয়ার স্কেল্যাবিলিটিটি আশা করতে পারেন: আপনার যুক্ত প্রতিটি সিপিইউ এটিকে দ্রুত করে তোলে।


2

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

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

--my initial set of test data, a list
tests = ["string1", "string2", "string3", ...]

--Map Step: turn strings into parsed results
--note the type, which demonstrates the map
applyParser :: [String] -> [Token]
--The actual function
applyParser input = map parser input

--Second map, turn tokens into output
showTokens :: [Token] -> [String]
showTokens t = map show t

--Reduce step, concat the results
combineResults :: [String] -> String
--In haskell, reduce is the foldl function, which takes an operation to fold with, a starting element, and a list to fold on
combineResults strings = foldl concat "" strings

--Finished program
testParser = print (combineResults(showTokens(applyParser tests)))

অবশ্যই, এটি কেবল শিক্ষাগত। আমার প্রকৃত কোড একটু আলাদা দেখায়, এবং আরও অভ্যন্তরীণ ফাংশন ব্যবহার (যেমন fold concatপ্রয়োজন হয় না, যেহেতু Haskell, ইতিমধ্যে রয়েছে unlinesযে আছে [String]->String)। আমার মূল বক্তব্যটি ছিল আমি যখন কোনও শুরু করার সাথে সাথে কোনও মানচিত্র ব্যবহার / কমিয়ে আনার প্রত্যাশা করি না, এটি কেবল আমার প্রয়োজন অনুসারে তৈরি হয়েছিল। আমি তালিকাগুলি সহ কিছু স্টাফ করতে চেয়েছিলাম, তারপরে আমার তালিকাটিকে আউটপুটের একক উপাদানে পরিণত করে। মানচিত্রের ব্যবহার / হ্রাস প্রাকৃতিকভাবে উদ্ভূত।

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


1

এটি কি সমান্তরাল?

যে কোনও সমান্তরাল সমস্যা মূলত মানচিত্র এবং ভাঁজ; বিপরীতভাবে, মানচিত্রের পদক্ষেপটি সহজাতভাবে সমান্তরাল হয় (এবং ভাঁজ ধাপটি এটি যে ভাঁজটি ভাঁজ করে এটির উপর নির্ভর করে), সুতরাং এটি একটি দ্বিপাক্ষিক সম্পত্তি।


3
এটি বিব্রতকরভাবে সমান্তরাল সমস্যার ক্ষেত্রেই । প্রচুর সমস্যা রয়েছে যা অত্যন্ত সমান্তরাল, তবে এর মধ্যে এমন উপাদানগুলির মধ্যে পর্যাপ্ত মিথস্ক্রিয়া থাকে যা একটি সাধারণ মানচিত্রের দক্ষ না হয়।
মার্ক বুথ

লিঙ্কটির জন্য ধন্যবাদ, আমি এমব্র্যাসেসলি প্যারালেল শব্দটি সম্পর্কে জানতাম না। সমস্ত মানচিত্র কি অলঙ্ঘনীয়ভাবে প্যারালেলকে হ্রাস করতে পারে?
পল সানওয়াল্ড

1
অনেকগুলি বিব্রতকরভাবে সমান্তরাল সমস্যা রয়েছে, যার সবগুলিই হ্রাস অংশের প্রয়োজন নেই।
ডোনাল ফেলো

1

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


1

আমি মানচিত্রে ব্যবহার করার সিদ্ধান্ত নেওয়ার (বা ব্যবহার না করে) তদন্ত করার জন্য যে প্রধান প্রশ্নগুলি ব্যবহার করি তা এখানে।

  • কোনও প্রদত্ত সমস্যার জন্য ন্যূনতম প্রোগ্রামার প্রচেষ্টা সহ যুক্তিসঙ্গত সমান্তরাল সম্পাদন কার্যকারিতা অর্জন করা কি গুরুত্বপূর্ণ?
  • আমার কাছে কি সমান্তরাল কার্যনির্বাহী উপাদানগুলির একটি বৃহত সংখ্যক (শত) উপস্থিত রয়েছে?
  • সমান্তরাল এক্সিকিউশন উপাদানগুলির মধ্যে কি দুর্দান্ত যোগাযোগের ব্যান্ডউইথ / থ্রুপুট রয়েছে?
  • আমার কি বিপুল পরিমাণ ডেটা (টিবি) প্রসেস করা দরকার?
  • আমি যে সমস্যাটি সমাধান করতে চেষ্টা করছি সেটি কী ম্যাপে পচানোর এবং অপারেশন হ্রাস করার চেষ্টা করছে?

    • মানচিত্র: সমস্ত ডেটাতে একই ক্রিয়াকলাপ চালান।
    • হ্রাস করুন: মানচিত্র দ্বারা উত্পাদিত প্রতিটি গ্রুপের ডেটাতে একই ক্রিয়াকলাপটি কার্যকর করুন।

1

কার্যত, এটি একটি জেনেরিক "বিভাজন এবং জয়" প্যাটার্ন, যাতে গণনা বিতরণের সমাধানগুলি সাধারণভাবে লেখা যায়।

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

প্যাটার্নটি দরকারী, কারণ একবার আপনি জেনেরিক মানচিত্রটি পেয়ে / কার্যকরকরণ কমিয়ে আনলে আপনি একই সফ্টওয়্যার স্তরটি ব্যবহার করে যে কোনও সমস্যার সমাধান করতে পারেন, আপনাকে কেবল তার সমস্যাটির দিক থেকে প্রকাশ করতে হবে।

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