I. Introduction
Over the past years, with the rapid development of mobile devices and the Internet of Things (IoT), the computing platform for business applications and personal entertainment has gone through a revolutionary change [1]. Mobile devices, such as smartphones and tablets, have become pervasive and critical in our daily lives. In the meanwhile, with the continuous development of machine learning and virtual reality, many smart applications and services are provided to enable a more convenient and intelligent life. However, these smart applications and services have become more computation-intensive. It is expected that the current mobile devices will not be able to satisfy the high demand for computing resources because they are constrained in terms of processing power, storage capacity, and battery life. To tackle the problem, mobile devices could offload computation-intensive tasks to cloud servers. However, cloud servers are typically far from mobile devices. Consequently, this solution often suffers from the long latency problem [2] [3]. For time-sensitive applications that need a prompt response, such as real-time navigation and online gaming, it is infeasible to offload computation-intensive tasks to cloud servers. Namely, centralized cloud computing is not very effective for geo-distributed mobile devices.