سؤال

وماذا سيناريوهات تبرر استخدام " خريطة وتقليل " الخوارزمية؟

و
هل هناك تنفيذ الصافي من هذه الخوارزمية؟

هل كانت مفيدة؟

المحلول

وحكمه ينق من خريطة والحد من: إذا كنت محظوظا بما فيه الكفاية لينق ثم لا تحتاج لكتابة الخريطة الخاصة بك وخفض وظائف. C # 3.5 و ينق ديه بالفعل وإن كان تحت مسميات مختلفة.

Map = Select | Enumerable.Range(1, 10).Select(x => x + 2);
Reduce = Aggregate | Enumerable.Range(1, 10).Aggregate(0, (acc, x) => acc + x);
Filter = Where | Enumerable.Range(1, 10).Where(x => x % 2 == 0);

https://www.justinshield.com/2011/06/mapreduce -في-ج /

نصائح أخرى

والطبقات المشكلة التي هي مناسبة تماما للتوصل إلى حل على غرار مابريديوس هي مشاكل التجميع. استخراج البيانات من مجموعة بيانات. في C #، يمكن للمرء الاستفادة من LINQ إلى البرنامج في هذا النمط.

ومن المقالة التالية: http://codecube.net/2009/02/mapreduce-in- ج-استخدام-LINQ /

<اقتباس فقرة>   

ويتصرف على طريقة GroupBy كما الخريطة، في حين أن طريقة الاختيار لا وظيفة للحد من نتائج المتوسطة في القائمة النهائية للنتائج.

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 (من <لأ href = "https://github.com/cs-util-com/cscore/blob/master/CsCore/PlainNetClassLib/src/Plugins/CsCore/com/csutil/collections /IEnumerableExtensions.cs "يختلط =" نوفولو noreferrer "> https://github.com/cs-util-com/cscore/blob/master/CsCore/PlainNetClassLib/src/Plugins/CsCore/com/csutil/collections/IEnumerableExtensions. خدمات العملاء ):

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 :

إذا كنت تحاول إرسال نسختك الخاصة من جوجل ثم التي قد تبرر ذلك ..!

وعلى الرغم من جدية، إذا كنت قد حصلت على المشكلة التي يمكن أن تتحلل إلى العديد من المشاكل الصغيرة ثم حل خريطة تقليل من شأنه أن يعمل. وثيقة جوجل على مابريديوس لديها عدد من الأمثلة الجيدة، بما في ذلك كيفية معالجة الآلاف من صفحات الويب، وتعول الكلمات في الوثيقة، الخ الخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top