I have read about how QAOA is used to tackle the MAX-CUT problem and wanted to test my understanding by trying to implement some code to approximate the MAX-3-SAT problem.
To do so, I considered the following clauses (as an example): $$\begin{align*}C_1 = x_2\lor \overline{x_3} \lor \overline{x_4}\\ C_2 = x_2\lor {x_3} \lor {x_4}\\ C_3 = \overline{x_1}\lor x_2 \lor {x_4} \\ C_4 = \overline{x_1}\lor \overline{x_2}\lor x_3\end{align*} \\ C_5 = x_1 \lor \overline{x_2} \lor \overline{x_4}$$
So we need to find true/false assignments for the variables such that the maximum number of clauses is satisfied. Following the reasoning presented in Qiskit Textbook (Appendix) I could find the cost for each clause ($C_1(x)=1-(1-x_2)x_3x_4$ for example) and using the substitution $x_i \rightarrow \frac{1}{2}(1-Z_i)$ where $Z_i$ is the Pauli $Z$-gate acting on qubit $i$ I found an expression for the clause Hamiltonians (for example $\hat{C_1}=Ι-\frac{1}{8}(Ι+Z_2)(Ι-Z_3)(Ι-Z_4)$).
My question is, how can I implement this in Qiskit? In the case of MAX-CUT it was easy because up to a constant the Hamiltonian could be implemented with an $RZZ$-gate for each edge. I guess something similar could be done here if I expand each clause Hamiltonian yet I think I will need some kind of $RZZZ$-gates (if that's even a thing) and potentially a lot of gates.