কোরউইম্যান

কোরউইম্যান

নেভিগেশন | প্রথম | পরবর্তী

ভূমিকা

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

ব্যাকস্টোরি

অনেক চাঁদ ফিরে আমি কিছু মুছে ফেলা কোডিং তত্ত্ব অ্যাপ্লিকেশনগুলির জন্য স্ব-শিক্ষার গ্যালোইস ক্ষেত্র ছিল। কম্পিউটার বিজ্ঞানীদের জন্য অ্যাক্সেসযোগ্য সংস্থার অভাব নিয়ে আমি বেশ হতাশ হয়েছি। অনেক সংস্থান অনুমান করা হয়:

  1. এটি আপনার দক্ষতার স্তরের বাইরে তাই আসুন আমরা ওভারসিম্প্লিফাই করি ("it's hard, don't worry about it"), বা
  2. আপনার অ্যাবস্ট্রাক্ট বীজগণিতের পূর্বের খাঁটি গণিত অধ্যয়ন ছিল ("it's easy, just use jargon jargon jargon")

দুর্ভাগ্যক্রমে, বেশিরভাগ কম্পিউটার বিজ্ঞান পাঠ্যক্রমগুলিতে বিমূর্ত বীজগণিত স্ট্যান্ডার্ড বিষয় নয়। প্রায়শই কম্পিউটার বিজ্ঞানের গণিত শুরু হয় এবং পৃথক গণিতের সাথে শেষ হয়। আপনি যদি ভাগ্যবান হন তবে সম্ভবত আপনি লিনিয়ার বীজগণিতের সংস্পর্শে এসেছেন।

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

এই বিষয় কি?

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

উদাহরণস্বরূপ, আমরা এমন একটি বীজগণিত তৈরি করতে পারি যা আমাদের রঙ যুক্ত করতে বা গুণ করতে দেয়:

একটি ডাবল রেইনবো?

এবং এটিই বিষয়টিকে বিমূর্ত এবং বিভ্রান্তিকর করে তোলে। আপনি কীভাবে বলতে পারেন যে সংখ্যাগুলি কিছু যায় আসে না? এটা বোঝা যায় না।

এমনকি জ্যাকি গণিতে লড়াই করে

এবং তবুও, আমরা কেন এটি অধ্যয়ন করতে চাই? একজন কম্পিউটার বিজ্ঞানী কেন যত্ন করবেন?

ঠিক আছে, আমরা ডেটা ম্যানিপুলেট করতে কম্পিউটার অ্যালগরিদম ব্যবহার করি। আমরা এটিকে এনকোড/ডিকোড করি, আমরা এটিকে এনক্রিপ্ট/ডিক্রিপ্ট করি, আমরা দুর্নীতি সনাক্ত করি ইত্যাদি ইত্যাদি যদি আমরা এই জিনিসগুলি করতে সাধারণ গণিত ব্যবহার করতে পারি তবে কি দুর্দান্ত হবে না? এটি কি দুর্দান্ত হবে না যদি 8-বিট বাইট দ্বারা 8-বিট বাইট যুক্ত করতে বা গুণ করতে পারে এবং আরও 8-বিট বাইট পেতে পারে? এবং যদি আমরা এটি করতে পারি তবে আমরা কি ডেটা ওভার লিনিয়ার বীজগণিতও করতে পারি? হ্যাঁ, হ্যাঁ, এবং আরও হ্যাঁ। এ কারণেই বিমূর্ত বীজগণিত অধ্যয়ন সার্থক।

আমাকে রঙ করুন 42

(ইঙ্গিত: 263 বা 9282 উভয়ই উত্তর নয়, তারা 8-বিট সংখ্যা নয়)

আপনি কৌতুকপূর্ণ ব্লগ পোস্টগুলিও তৈরি করতে পারেন যা আপনার বন্ধুদের মনে করে যে আপনি দুধ এবং কুকিজের মতো পাগল হয়ে গেছেন 🥛 🍪 😊

অ্যাপ্লিকেশন

অ্যাপ্লিকেশন এবং অ্যালগরিদমগুলি বিস্ময়কর। আপনি প্রতিদিন অ্যাবস্ট্রাক্ট বীজগণিতের বাস্তবায়নের সাথে যোগাযোগ করেন: সিআরসি, এইএস এনক্রিপশন, উপবৃত্তাকার-কার্ভ ক্রিপ্টোগ্রাফি, রিড-সলোমন, অ্যাডভান্সড ইরেজুর কোড, ডেটা হ্যাশিং/ফিঙ্গারপ্রিন্টিং, জিরো-জ্ঞানের প্রমাণ ইত্যাদি ইত্যাদি

গ্যালোইস ফিল্ডস এবং অ্যাবস্ট্রাক্ট বীজগণিতগুলিতে একটি শক্ত-ব্যাকগ্রাউন্ড থাকা এই অ্যাপ্লিকেশনগুলি বোঝার জন্য একটি পূর্বশর্ত।

পদ্ধতির: ধাপে ধাপে, সক্রিয় শিক্ষা এবং শিক্ষিত প্রোগ্রামিং

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

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

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

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

সক্রিয় শিক্ষার জন্য, আমি আপনাকে নিজের বাস্তবায়নগুলি করতে এবং পড়ার সময় কমান্ড-লাইন সরঞ্জামগুলির সাথে চারপাশে খেলতে উত্সাহিত করি। আপনি যদি আপনার বাস্তবায়নগুলি উন্মুক্ত করতে চান তবে আমি তাদের এখানে লিঙ্ক করতে পেরে আরও বেশি খুশি:

পরিকল্পনা অপরিহার্য, পরিকল্পনা মূল্যহীন

এখানে রুক্ষ পরিকল্পনা। আমরা দেখতে পাব এটি আসলে কীভাবে হয়:

অন্যান্য সম্ভাব্য উন্নত বিষয়:

  • রবিন ফিঙ্গারপ্রিন্টিং
  • প্রসারিত ইউক্লিডিয়ান অ্যালগরিদম
  • লগ এবং ইনভলগ টেবিল
  • উপবৃত্তাকার বক্ররেখা
  • বিট-ম্যাট্রিক্স উপস্থাপনা
  • এফএফটি সহ দ্রুত গুণ
  • ভেক্টরাইজেশন বাস্তবায়ন কৌশল

প্রথম কয়েকটি বিভাগ তত্ত্ব। এই বিভাগগুলিতে খুব বেশি কোডিং নেই, তবে তারা সিরিজের পরে সাফল্যের জন্য খুব গুরুত্বপূর্ণ। তাদের এড়িয়ে যাবেন না।

শুরু করা যাক!

Source link

মন্তব্য করুন

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।