কনর ম্যাকব্রাইডের কিছু কাজ, ডিফ , ডিসিসেক্ট , তাদের "এক-গর্তের প্রকারের ধরণের" সাথে ডেটা ধরণের ডেরাইভেটিভ সম্পর্কিত। এটি হ'ল যদি আপনি যে ধরণের ডেটাভেটিভ গ্রহণ করেন তবে কোনও ডেটা টাইপ রেখে যান যা আপনাকে দেখায় যে কোনও নির্দিষ্ট বিন্দুতে ডাটা টাইপটি ভিতর থেকে কীভাবে দেখায়।
সুতরাং, উদাহরণস্বরূপ, যদি আপনার একটি তালিকা থাকে (হাসকেলে)
data List a = [] | a : List a
এই অনুরূপ
data List a = 1 + a * List a
এবং একটি সামান্য গাণিতিক যাদু মাধ্যমে, ডেরাইভেটিভ হয়
data ListDeriv a = List a * List a
যার অর্থ এটি ব্যাখ্যা করা হয় যে তালিকার যে কোনও বিন্দুতে বামদিকে একটি তালিকা এবং ডানদিকে একটি তালিকা থাকবে। ডেরাইভেটিভ ডেটা স্ট্রাকচার ব্যবহার করে আমরা মূল তালিকাটি জিপ করতে পারি।
এখন, আমি গ্রাফের সাথে অনুরূপ কিছু করতে আগ্রহী। গ্রাফগুলির একটি সাধারণ প্রতিনিধিত্ব হ'ল শীর্ষ এবং প্রান্তগুলির একটি সেট, যা কোনও তথ্য টাইপের সাথে নির্লজ্জভাবে প্রয়োগ করা যেতে পারে যেমন:
data Gr a b i = Gr [(i,a)] [(i,i,b)]
যদি আমি এটি সঠিকভাবে বুঝতে পারি, গ্রাফ সূচীর প্রতি এই ডেটা টাইপের একটি ডেরাইভেটিভ এর i
মতো হওয়া উচিত।
data GrDeriv a b i = d/di (Gr a b i)
= d\di ( [a*i] * [b*i^2] )
= (d\di [a*i]) * [b*i^2] ) + [a*i]*(d/di [b*i^2])
= (a* [a*i] * [a*i]) * [b*i^2] )
+ [a*i] * (2*b*i) *[b*i^2]*[b*i^2])
= InNodes { nodesLeft :: [(a,i)]
, nodeLbl :: a
, nodesRight :: [(a,i)]
, edges :: [(b,i,i)] }
| InEdges { nodes :: [(a,i)]
, adjNode :: Either (b,i) (b,i)
, edgesLeft :: [(b,i,i)]
, edgesRight :: [(b,i,i)] }
আমি ডেরাইভেটিভগুলির জন্য পণ্য বিধি এবং চেইন বিধিগুলি ব্যবহারের মাধ্যমে পেয়েছি এবং সম্ভবত কিছু ত্রুটি থাকলেও এটি সাধারণ স্কিমটি অনুসরণ করে বলে মনে হচ্ছে। এই কাঠামোতে আপনি হয় নোড (আইএনএনডস কনস্ট্রাক্টর) বা প্রান্তগুলি (প্রান্তগুলিতে) ফোকাস করবেন এবং স্থানটি দেবেন তবে আপনি প্রাসঙ্গিক ডেটা দেখতে পাবেন।
তবে এটি আমি প্রত্যাশা করছিলাম না। আমি মার্টিন এরভিজ ফাংশনাল গ্রাফ লাইব্রেরির ইন্টারফেসের সাথে আরও ঘনিষ্ঠভাবে সম্পর্কিত একটি নির্মাণের জন্য আশা করছিলাম। বিশেষত, আমি একটি নোডে নোডের লেবেল এবং দুটি সংলগ্ন তালিকার প্রতিনিধিত্বকারী একটি প্রসঙ্গ দেখতে চাই, একটি বহির্মুখী জন্য, একটি আসার জন্য।
Node a b = ([(i,b)],a,[(i,b)])
আমি আশাবাদটি দেখতে পাচ্ছি, যেহেতু সংলগ্নতার উপস্থাপনার সাথে কয়েকটি a
গর্তের ডেরিভেটিভ, একাকী লেবেল, প্রতিটি গর্তের স্থানে, প্রতিটি প্রান্তের সংলগ্ন প্রতিনিধিত্ব / বিচ্ছিন্নতার সাথে মিল রয়েছে terms
যেহেতু একটি ডেরাইভেটিভ মূল হিসাবে একই ক্রিয়াকলাপ নয়, তবে ডেরিভেটিভের একটি সংহতকরণ (কিন্ডোফ) রয়েছে, তাই কোনও কিছু সংহতকরণ অ্যানালগ রয়েছে যা ডেরিভেটিভকে নোড প্রসঙ্গের সংগ্রহে রূপান্তরিত করতে সাহায্য করবে? আসল কাঠামোটি পুনরুদ্ধার করার জন্য সরাসরি সংহতকরণ নয়, মনে রাখবেন, তবে মূলটির সমতুল্য একটি কাঠামো তবে আরও অ্যালগরিদম বান্ধব উপস্থাপনায়।
যদি সেখানে থাকে তবে আমি আশা করি যে সম্পর্কের ধরণের কাঠামোগুলি কিছু সহজ "শীর্ষে এবং প্রান্তগুলির সেট" ভাষা দ্বারা নির্দিষ্ট করা যেতে পারে এবং আমি সেই কাঠামোর সাথে কাজ করার জন্য একটি দক্ষ গ্রন্থাগার পেতে পারি। "গ্রাফ তত্ত্বের বাইরে" কাঠামোগত অধ্যয়নের জন্য এই জাতীয় প্রয়োগ ব্যবহার করা যেতে পারে: হাইপার গ্রাফ, সরলিক জটিলগুলি ...
So. এই ধারণাটি কি সম্ভব বলে মনে হচ্ছে? কাজে লাগল? এই ধরণের জিনিস নিয়ে আমি কি আরও পড়তে পারি?
অভিযোজ্য বস্তু
কার্টিস এফ দ্বারা মন্তব্য করা হিসাবে , নোড এবং প্রান্তগুলির একটি সেট ঠিক কোনও গ্রাফ নয়। যাইহোক, সমস্ত গ্রাফগুলি এ জাতীয় দ্বারা প্রতিনিধিত্ব করা যেতে পারে এবং আমি এটি যথেষ্ট সাধারণ উপস্থাপনা বলে মনে করি। আমি দেখেছি (খুব মোটা স্পেসিফিকেশন) এমন গবেষণায় ব্যবহৃত হয়েছে যা গ্রাফ তত্ত্বটি বিভিন্নভাবে ওয়্যারলেস নেটওয়ার্কগুলির অপ্টিমাইজেশনে প্রয়োগ করে। এখানে একটি খোলার অ্যাক্সেসের উদাহরণ, ড্র্যান্ড *। এটি প্রশ্ন উত্থাপন করে, উপস্থাপনাটির মধ্যে কী যোগসূত্র এবং কীভাবে কোনও সফ্টওয়্যার গবেষণার ভিত্তিতে প্রয়োগ করা যেতে পারে।
এটি বলেছিল, আমি থেকে অন্য কোনও কিছুর ইনপুট স্পেস পরিবর্তন করার সম্পূর্ণ বিরোধী নই । উদাহরণস্বরূপ, একটি সূচক প্রকার দেওয়া হয়েছে , নোড লেবেল, , এবং প্রান্ত লেবেল, । তারপরে গ্রাফটি সূচকগুলি থেকে একটি লেবেল এবং প্রান্ত তালিকার একটি ফাংশন।
এটি, আমি নিশ্চিত যে প্রকাশ করা যেতে পারে (বিভাগের তত্ত্ব?)
অথবা
যা শীর্ষে এবং প্রান্তের সেট হিসাবে দেখা যায় - যথেষ্ট পরিমাণ সতর্কীকরণ দেওয়া হয়েছে। তবে, এর উদ্ভূত অর্থবোধক কিনা তা পরিষ্কার নয় :
আমার মনে হয় এটি কিছু প্রতিশ্রুতি দেখায়, তবে আরও এগিয়ে যাওয়ার মতো পরিশীলতার আমার অভাব রয়েছে। আমি জানি যে সংযোগটি আরও অন্বেষণ করতে এখানে অবশ্যই কিছু কাজ করা উচিত।
* যদি লিঙ্কটি কখনও ভেঙে যায়, উদ্ধৃতি দেওয়া: রি, ইনজং, এবং অন্যান্য। "ড্র্যান্ড: ওয়্যারলেস অ্যাডহক নেটওয়ার্কগুলির জন্য বিতরণ করা এলোমেলো করে টিডিএমএ শিডিউলিং।" মোবাইল কম্পিউটারে আইইইই লেনদেন 8.10 (2009): 1384-1396।