I. Introduction
Parallel computing was firstly introduced in in 1960s and developed with the increasing demand for high performance computing. It divides one application program into multiple, interdependent task collections (known as parallel programming) and assigns them to different processors to be executed. Highly effective task scheduling is the critical technology of parallel computing. Existed researches have confirmed that the optimal scheduling of general task graphs is an NP-complete problem [1].