Honestly, the easiest way to remove waypoints is to simply skip every 1 or 2 or ## waypoints in your Dijkstra or A* (or similarly navigated) map. You do this by looking at the list of nodes to travel to and literally ignoring specifically chosen nodes. Not only do you have to create a path plan for your robot (or people), you need to create a separate algorithm on top of the navigation algorithm that takes care of removing waypoints.
This can be done in a smarter way by looking at the 2-D gradients. In other words, if the grid were an image, you would pass the image through an edge detector filter and try to place straight lines or curves over the edges with fitting algorithms (splines come to mind here).
The problem here is that you need to start from a high precision map, and then remove points to create a low precision map until you start to intersect obstacles or other experiment constraints. The parameters of precision aka. the resolution of the map (like an image) are experiment specific, and are therefore outside the scope of robotics stack exchange. In other words, the "simplification" of the map is an entirely separate problem to path planning.
Note: I am sure there are algorithms that do this automatically, I simply don't know them. Algos like RRT can take advantage of simplification, but those aren't grid based like the question suggests as a requirement, but I may be reading too far into the question.