شما برای این کار با فرض اینکه هر سطر از ماتریستون نشان دهنده یک قانون باشد که مقدار صفر نشان دهنده این است که مقدار آن ویژکی برایتان مهم نیست. خیلی راحت میتونین داده تست (که یک سطر می باشد) را با تک تک سطرها مقایسه کنین. برای اینکه سرعت اجرا بره بالا هرجا دیدید یکی از ویژگیها با یکدیگر متفاوت است برید سراغ سطر بعدی. شما نیاز به حلقه دارین و مجبور هستین ازش استفاده کنین!!!
هرجا قانون با اون داده تست منطبق شد و شماره کلاس پیدا شد دیگر نیازی نیست بقیه قوانین مقایسه شوند. فقط مشکلی که هست این است که برای هر داده تست نیاز است به صورت خطی عمل مقایسه انجام شود که در بدترین حالت برابر با تعداد قوانین * تعداد ویژگیها خواهد بود که مقدار قابل توجهی است.
برای این کار شما میتونین یکبار عمل مرتب سازیو انجام بدین . به این صورت که ابتدا بر اساس مقادیر ویژگی اول قوانین مرتب شوند . سپس بر اساس ویژگی دوم و.... . مثلا مثل زیر:
1 3 4 5 6
1 4 2 3 5
1 4 3 5 5
2 1 3 3 2
و ...
با این کار می تونین از جستجوی دودویی استفاده کنین. به این صورت که ابتدا بر اساس ویژگی اول داده تست به دنبال قوانینی میگردین که با اون منطبق هست. ابتدا از اندیس وسط قوانین شروع میکنین (مثلا 1000 تا قانون دارین از اندیس 500) و ویژگی اولشو با هم مقایسه میکنین بر اساس اون می فهمین باید برین سراغ زیر بازه اول یا دوم . بعد از اینکه اولین و آخرین قانون با این مقدار ویژگی پیدا شد، میرید سراغ ویژگی دوم و همین کارو با این مجموعه قوانین به دست اومده انجام میدید تا بالاخره قانون منطبق شده به دست بیاد.