Merkle Paths are mostly used by Light Wallets for verifying weather a particular transaction is included in the particular block.
How to get a MP? I don't see any more information. And that's my naturally guess: it's like getting it for the first time, from the leaf nodes ,hash and hash... , until the Merkle root. Then getting the path as required.
Is that true? Each time a request is received from a SPV node, there is a operation involve all the leaf nodes?
Once the Light Wallet requests the Full Node for the Path, it receives a response with the block header and the particular transactions along with merkle paths. A full node is the one that generates the merkle path. Consider that once the block is picked up, the transaction is double hashed and the double hashed data is stored in each leaf node. Then 2 leaf node hashes are picked up and hashed again resulting in another leaf. This hashing is continued till the merkle root is achieved. Since these are double hashed until achieving merkle root, the size of a root will always be 32 bytes. This root hash is stored along with the block header.
Once the Light Wallet requests the Block for verifying the transaction using the bloomfilter, the Full Node responds with a MSG_MERKLEBLOCK message. It contains the block header with the merkle path. Light Wallet then verifies the transaction and blocks. Since the Light Wallets just receive few Kb's of data rather than the whole block size, they are lesser in size.
Is there any other way to reduce computation?
I don't think so there is a way to reduce the computation happening. Correct me if I am wrong.