I. Introduction
Graph is a general and ubiquitous data structure that plays a crucial role in various aspects of the world. Since it was first introduced in the 18th century, graph has been an important subject in many research fields. By representing relationships between entities with nodes and links among them, graph is useful to model complex systems of interactive elements. For example, in a social network, a user account can be seen as a node and the friendship between two users can be seen as a link. In a protein-protein interaction network, each node in the network represents a protein and two proteins are linked if they interact with each other. In many real world scenarios, complex networks are only partially observed, i.e. have missing or hidden links. Social network users who know each other in real life might have not been connected in a social network platform yet. In medical and biological studies, interaction graphs are incomplete because they rely only on expensive lab experiment data. Re-establishing such hidden friendships and possible biological interactions undoubtedly derives tremendous benefits in both academic and industrial settings. In the machine learning context, the task of re-discovering those potential relationships is called link prediction.