Thuật toán Johnson