Learning graphical models fundamental limits and efficient algorithms