  Device to Device (D2D) communication takes advantage of the proximity between
the communicating devices in order to achieve efficient resource utilization,
improved throughput and energy efficiency, simultaneous serviceability and
reduced latency. One of the main characteristics of D2D communication is reuse
of the frequency resource in order to improve spectral efficiency of the
system. Nevertheless, frequency reuse introduces significantly high
interference levels thus necessitating efficient resource allocation algorithms
that can enable simultaneous communication sessions through effective channel
and/or power allocation. This survey paper presents a comprehensive
investigation of the state-of-the-art resource allocation algorithms in D2D
communication underlaying cellular networks. The surveyed algorithms are
evaluated based on heterogeneous parameters which constitute the elementary
features of a resource allocation algorithm in D2D paradigm. Additionally, in
order to familiarize the readers with the basic design of the surveyed resource
allocation algorithms, brief description of the mode of operation of each
algorithm is presented. The surveyed algorithms are divided into four
categories based on their technical doctrine i.e., conventional optimization
based, Non-Orthogonal-Multiple-Access (NOMA) based, game theory based and
machine learning based techniques. Towards the end, several open challenges are
remarked as the future research directions in resource allocation for D2D
communication.
