সমস্ত প্রোগ্রামিং সমস্যা অ্যালগোরিদম সমস্যা আছে? [বন্ধ]


13

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

সুতরাং আমার প্রশ্নটি যেমন শিরোনামে বলে। এই অ্যালগরিদমিক ফ্যাশনে চিন্তা করে কি প্রতিটি সমাধানযোগ্য প্রোগ্রামিং সমস্যা সমাধানযোগ্য? কোন ভাষা, ক্ষেত্র ইত্যাদি? যদি হ্যাঁ, যুক্তি দিন, অন্যথায়, যুক্তি দিন!

আমি জিইউআই, এআই, গ্রাফিকস ইত্যাদির সাহায্যে অনেকগুলি জটিল প্রোগ্রাম বাস্তবায়ন করি নি ... তবে এই ধরণের সমস্যাগুলি কি ভাল অ্যালগরিদমগুলি চিন্তা করার বিষয়?


6
একজন প্রোগ্রামার, ইমো জন্য সর্বাধিক সাধারণ সমস্যা হ'ল: "ওহ, আপনি যা বোঝাতে চেয়েছিলেন এটিই ছিল? এখন আমি বুঝতে পেরেছি it's তবে আমি এটি প্রয়োগ করি নি, দুঃখিত"। এটি কি প্রোগ্রামিং সমস্যা?
কেপলা

1
এই প্রশ্নটি খুব অনুরূপ।
back2dos

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

@ কেপ্পলা (প্লাস ওয়ান) অপেরা, এটি একটি প্রয়োজনীয় সমস্যা, সমস্ত সফ্টওয়্যার দুর্দশার মূল কারণ
মাওগ বলেছেন, মনিকা

উত্তর:


29

এটি "প্রোগ্রামিং সমস্যা" কীভাবে সংজ্ঞায়িত করে তার উপর নির্ভর করে।

রিয়েল-ওয়ার্ল্ড প্রকল্পগুলিতে, উত্তরটি অবশ্যই একটি স্পষ্ট নম্বর নয়। বেশিরভাগ সমস্যাগুলি প্রযুক্তিগত সমস্যাও নয়, তবে যোগাযোগের সমস্যা, প্রয়োজনীয়তাগুলি অস্পষ্ট ইত্যাদি etc.

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

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

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

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


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

এটি এর কঠোর অর্থে সত্য, তবে আমি একের জন্য i++আমাদের নতুন ওভারলর্ড .. এরম .. অ্যালগরিদম হিসাবে গ্রহণ করি না ।
ফ্রাঙ্ক

তবে আমরা যদি সংযোজন সম্পর্কে জানতাম না। তারপরে সংযোজনের প্রবর্তনটি আমাদের অ্যালগরিদমের স্টাডিতে একটি দুর্দান্ত উদ্ভাবন হবে! এবং তাই আমরা যতক্ষণ না আরও বেশি জটিল অ্যালগরিদমের মুখোমুখি হই।
সিএমসিডিগ্রাগনকাই

8

প্রোগ্রামিং সমস্যা বলতে কী বোঝ?

উইকিপিডিয়া অনুসারে:

কম্পিউটার প্রোগ্রামিং (প্রায়শই প্রোগ্রামিং বা কোডিংয়ে সংক্ষিপ্ত) কম্পিউটার প্রোগ্রামগুলির সোর্স কোড ডিজাইন, রাইটিং, টেস্টিং, ডিবাগিং এবং বজায় রাখার প্রক্রিয়া।

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

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

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

এখন, যদি আপনি ধরে নিচ্ছেন যে "প্রোগ্রামিং সমস্যা" তে, "প্রোগ্রামিং" হ'ল কোডের মাধ্যমে অ্যালগরিদমের অনুবাদের সমার্থক, তবে হ্যাঁ, যৌক্তিকভাবে কোনও সমস্যা হতে পারে একটি অ্যালগোরিদম সমস্যা: A × n = B × nযদি A = B


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

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

6

আমি মনে করি উত্তরটি জোর দিয়ে না । অ্যালগরিদমগুলি কেবল আরও বৃহত্তর দক্ষতার সেটে ব্লক তৈরি করছে।

আমি সিএস এ ডিগ্রি পেয়েছি, এআই-তে বিশেষীকরণ করছি

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

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

অ্যালগরিদমগুলিও গুরুত্বপূর্ণ, তবে এগুলি কেবল গল্পের অংশ।


5

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

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

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


2

বেশিরভাগ প্রোগ্রামিং সমস্যাগুলি আসলে সিস্টেম প্রশাসনের সমস্যা।

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

সঠিকভাবে অ্যালগোরিদম পাওয়া সাধারণত সমস্যার একটি ছোট অংশ। সমস্যাটির বাকি অংশটি বাস্তব বিশ্বে বাস্তব সমস্যাগুলি সমাধানের জন্য প্রোগ্রামটি রাখছে।


"অ্যালগোরিদমগুলি ডান পাওয়া সাধারণত সমস্যাটির একটি ছোট্ট অংশ" কাগল ডটকম-এ সমস্যাগুলি [টিএম] এই বর্ণনার সাথে মানান না।
গ্যান্ডালফ

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

2

আমি মনে করি হ্যাঁ, সমস্ত প্রোগ্রামিং সমস্যাগুলি অ্যালগোরিদমিক ফ্যাশনে চিন্তা করে সমাধানযোগ্য। সর্বোপরি একটি অ্যালগোরিদম হ'ল নির্দেশাবলীর একটি সেট যা কম্পিউটারকে কী করতে হবে তা বলে।

উপর থেকে কিছু উদাহরণ নিচ্ছেন

উদাহরণস্বরূপ, জিইউআইগুলি প্রায়শই "প্রোগ্রাম" এর দিকে সোজা থাকে, তবে জড়িত আসল সমস্যাটি হ'ল একটি ভাল নকশা করা (কোনও ব্যবহারযোগ্যতার দিক থেকে, কেবল গ্রাফিকাল উপস্থিতি নয়) not

প্রোগ্রামিং এবং এমনকী ডিজাইনের ক্ষেত্রে যা প্যাটার্ন / বিধিগুলি জানতে পারে যা কার্যকর জিইউআই ডিজাইনগুলি ব্যবহার করে যা ব্যবহারকারীর अनुकूल এবং দক্ষ। এই নিয়মগুলি একটি অ্যালগরিদমে হ্রাস করা হয়েছে যা অনুসরণ করা হলে ব্যবহারকারীর বান্ধব GUI উত্পাদন করতে সহায়তা করা উচিত। আসলে জিইউআইতে নিয়ন্ত্রণ স্থাপনের আসল পদক্ষেপগুলিও একটি অ্যালগরিদমে হ্রাস করা যেতে পারে

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

তবে আপনি যেভাবে ইউনিট পরীক্ষাগুলি যুক্ত করে সেটিকে কোনও অ্যালগরিদম দ্বারা বর্ণনা করা যেতে পারে

  1. নতুন ইউনিট পরীক্ষা শনাক্ত করুন
  2. ইউনিট পরীক্ষা লিখুন
  3. মূলধনকরণ সাধারণকরণ অ্যালগরিদম প্রয়োগ করুন
  4. মন্তব্য প্রয়োগ করুন অ্যালগরিদম

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

বেশিরভাগ হ্যাঁ উত্তর সহ সমস্যাটি হ'ল লোকেরা কুইকসোর্ট, বাবল সাজ্টের পরিবর্তে অ্যালগরিদমগুলি সম্পর্কে চিন্তাভাবনা করে যা কোনও স্পষ্টভাবে সংজ্ঞায়িত যুক্তি / নিয়মের একটি সেটে সমস্যার ভারবস স্পষ্ট বর্ণনা হ্রাস করে instructions

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