Novak Djokovic produced yet another scarcely believable comeback to stun Carlos Alcaraz in a thriller and reach the Australian Open semi-finals.