" মানচিত্র এবং হ্রাস " অ্যালগরিদম ব্যবহারের জন্য কোন পরিস্থিতিতে ওয়ারেন্ট হবে ?
এই অ্যালগরিদমের একটি .NET বাস্তবায়ন আছে?
" মানচিত্র এবং হ্রাস " অ্যালগরিদম ব্যবহারের জন্য কোন পরিস্থিতিতে ওয়ারেন্ট হবে ?
এই অ্যালগরিদমের একটি .NET বাস্তবায়ন আছে?
উত্তর:
মানচিত্র এবং হ্রাসের লিনাক সমতুল্য: আপনি যদি লিনক রাখার পক্ষে যথেষ্ট ভাগ্যবান হন তবে আপনার নিজের মানচিত্রটি লেখার প্রয়োজন নেই এবং ফাংশনগুলি হ্রাস করতে হবে। সি # 3.5 এবং লিনকের ইতিমধ্যে এটি বিভিন্ন নামে রয়েছে।
মানচিত্রটি হ'ল Select
:
Enumerable.Range(1, 10).Select(x => x + 2);
হ্রাস হ'ল Aggregate
:
Enumerable.Range(1, 10).Aggregate(0, (acc, x) => acc + x);
ফিল্টারটি হ'ল Where
:
Enumerable.Range(1, 10).Where(x => x % 2 == 0);
Reduce
পরিবর্তে ডাকবে না Aggregate
... এমএস কেবল প্রোগ্রামারদের বিরক্ত করতে পছন্দ করে
মানপ্রেডুস স্টাইল সমাধানের জন্য যে শ্রেণীর সমস্যার জন্য উপযুক্ত তা হ'ল সমষ্টিগত সমস্যা reg একটি ডেটাসেট থেকে ডেটা আহরণের Of সি # তে, কেউ এই স্টাইলে প্রোগ্রামের জন্য লিনকিউ ব্যবহার করতে পারে।
নিম্নলিখিত নিবন্ধ থেকে: http://codecube.net/2009/02/mapreduce-in-c-used-linq/
গ্রুপবাই পদ্ধতি মানচিত্র হিসাবে কাজ করছে, যখন নির্বাচন পদ্ধতিটি মধ্যবর্তী ফলাফলগুলিকে ফলাফলের চূড়ান্ত তালিকার মধ্যে হ্রাস করার কাজ করে।
var wordOccurrences = words
.GroupBy(w => w)
.Select(intermediate => new
{
Word = intermediate.Key,
Frequency = intermediate.Sum(w => 1)
})
.Where(w => w.Frequency > 10)
.OrderBy(w => w.Frequency);
বিতরণ করা অংশের জন্য, আপনি DryadLINQ পরীক্ষা করতে পারেন: http://research.microsoft.com/en-us/projects/dryadlinq/default.aspx
যেহেতু আমি কখনোই মনে করতে পারেন যে LINQ এটা কল Where
, Select
এবং Aggregate
পরিবর্তে Filter
, Map
এবং Reduce
তাই আমি কয়েক এক্সটেনশন পদ্ধতি নির্মিত আপনি ব্যবহার করতে পারেন:
IEnumerable<string> myStrings = new List<string>() { "1", "2", "3", "4", "5" };
IEnumerable<int> convertedToInts = myStrings.Map(s => int.Parse(s));
IEnumerable<int> filteredInts = convertedToInts.Filter(i => i <= 3); // Keep 1,2,3
int sumOfAllInts = filteredInts.Reduce((sum, i) => sum + i); // Sum up all ints
Assert.Equal(6, sumOfAllInts); // 1+2+3 is 6
এখানে 3 টি পদ্ধতি ( https://github.com/cs-util-com/cscore/blob/master/CsCore/PlainNetClassLib/src/Plugins/CsCore/com/csutil/collections/IEnumerableExtensions.cs থেকে ):
public static IEnumerable<R> Map<T, R>(this IEnumerable<T> self, Func<T, R> selector) {
return self.Select(selector);
}
public static T Reduce<T>(this IEnumerable<T> self, Func<T, T, T> func) {
return self.Aggregate(func);
}
public static IEnumerable<T> Filter<T>(this IEnumerable<T> self, Func<T, bool> predicate) {
return self.Where(predicate);
}
Https://github.com/cs-util-com/cscore#ienumerable- এক্সটেনশন থেকে আরও কিছু বিশদ :