Ya veo el problema. Es que en tu segunda tabla entra \( y \), pero no sale \( h_1 \). Si sacas \( h_1 \), que no es la que toca, te sales del conjunto de oportunidades, como es lógico que suceda. La variable que sale es \( h_3 \), precisamente porque vale 0.
La idea del símplex es muy simple, como su nombre indica: la variable \( x \) vale 0, y el criterio de entrada te dice que si la haces aumentar, la función objetivo mejorará. Pero cuando aumentas \( x \), las demás variables básicas se van a modificar, y tienes que sacar la primera que llegue a valer \( 0 \), porque si haces cero otra, cuando ésa haya llegado a cero, la primera en hacerse cero se habrá hecho ya negativa, y te habrás salido del conjunto de oportunidades.
Para saber cuál tarda menos en llegar a cero divides su valor actual (el espacio que tiene que recorrer para llegar a 0) entre la velocidad a la que se mueve (contando únicamente las velocidades positivas, porque en realidad la velocidad positiva indica que la variable disminuye, mientras que las velocidades negativas corresponden a variables que aumentan y, por lo tanto, nunca llegarán a 0. Al dividir el espacio entre la velocidad tienes el tiempo que tardan en llegar a 0, y tienes que sacar la que menos tiempo tarda.
Ahora bien, si una variable ya es 0 (y tiene velocidad positiva) es ésa la que tienes que sacar, porque si sacas otra, esa variable parte de 0 y decrece, luego se te hará negativa, que es lo que te ha pasado.
En general: para el criterio de salida, tienes que considerar todas las variables con velocidad positiva y, de entre ellas, sacar la que dé menor cociente valor actual / velocidad, sin descartar las que tienen valor actual 0. En particular, si hay una variable que vale 0 y su velocidad es positiva, ésa es la que sale (o una cualquiera de ellas si hay varias).